ScummVM API documentation
dgBodyMasterList.h
1 /* Copyright (c) <2003-2011> <Julio Jerez, Newton Game Dynamics>
2  *
3  * This software is provided 'as-is', without any express or implied
4  * warranty. In no event will the authors be held liable for any damages
5  * arising from the use of this software.
6  *
7  * Permission is granted to anyone to use this software for any purpose,
8  * including commercial applications, and to alter it and redistribute it
9  * freely, subject to the following restrictions:
10  *
11  * 1. The origin of this software must not be misrepresented; you must not
12  * claim that you wrote the original software. If you use this software
13  * in a product, an acknowledgment in the product documentation would be
14  * appreciated but is not required.
15  *
16  * 2. Altered source versions must be plainly marked as such, and must not be
17  * misrepresented as being the original software.
18  *
19  * 3. This notice may not be removed or altered from any source distribution.
20  */
21 
22 #if !defined(AFX_DGBODYMASTER_LIST_35290_35290_A510_A865B2CC0789__INCLUDED_)
23 #define AFX_DGBODYMASTER_LIST_35290_35290_A510_A865B2CC0789__INCLUDED_
24 
25 #include "hpl1/engine/libraries/newton/core/dg.h"
26 
27 class dgBody;
28 class dgConstraint;
29 
31 public:
32  dgConstraint *m_joint;
33  dgBody *m_bodyNode;
34 };
35 
36 class dgBodyMasterListRow : public dgList<dgBodyMasterListCell> {
37 public:
40 
41  dgBody *GetBody() const {
42  return m_body;
43  }
44 
45  void RemoveAllJoints();
46  dgListNode *AddJoint(dgConstraint *const joint, dgBody *const body);
47 
48  void SortList();
49 
50 private:
51  dgBody *m_body;
52 
53  friend class dgBodyMasterList;
54 };
55 
56 class dgBodyMasterList : public dgList<dgBodyMasterListRow> {
57 public:
58  dgBodyMasterList(dgMemoryAllocator *const allocator);
60 
61  void AddBody(dgBody *const body);
62  void RemoveBody(dgBody *const body);
63  void RemoveConstraint(dgConstraint *const constraint);
64  void AttachConstraint(dgConstraint *const constraint, dgBody *const body0, dgBody *const body1);
65 
66  dgBodyMasterListRow::dgListNode *FindConstraintLink(const dgBody *const body0, const dgBody *const body1) const;
67  dgBodyMasterListRow::dgListNode *FindConstraintLinkNext(const dgBodyMasterListRow::dgListNode *const me, const dgBody *const body) const;
68 
69  void SortMasterList();
70 
71 public:
72  dgUnsigned32 m_constraintCount;
73 };
74 
75 #endif
Definition: dgBodyMasterList.h:56
Definition: dgBody.h:85
Definition: dgList.h:33
Definition: dgBodyMasterList.h:36
Definition: dgMemory.h:80
Definition: dgBodyMasterList.h:30
Definition: dgConstraint.h:169