00001
00002
00003
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifdef TA_DYNAMIC_OBJECT_GROUP_ENABLED
00015
00016 #ifndef TA_DYNAMICOBJECTGROUP_H
00017 #define TA_DYNAMICOBJECTGROUP_H
00018
00019 #ifndef TA_DYNAMICOBJECT_H
00020 #include "DynamicObject.h"
00021 #endif // TA_DYNAMICOBJECT_H
00022
00023 namespace TA
00024 {
00025
00026 class TAPHYSICS_CLASS DynamicObjectGroup : public DynamicObject
00027 {
00028 public:
00030
00031 void Initialise(DynamicObject* pDynamicObject);
00032 void Finalise();
00034
00036
00037 virtual void Update(float fDt);
00038 virtual void ApplyVelocityToNextFrame(float fDt);
00040
00041 void AddDynamicObject(DynamicObject* pDynamicObject);
00042 void RemoveDynamicObject(DynamicObject* pDynamicObject);
00043
00044 static DynamicObjectGroup* TAC_CALL CreateNew();
00045
00046 protected:
00047 DynamicObjectGroup();
00048 ~DynamicObjectGroup();
00049
00050 private:
00051 struct Child
00052 {
00053 MFrame mFrame;
00054 DynamicObject* pDynamicObject;
00055 };
00056 typedef List<Child>::Iterator ChildIterator;
00057 typedef List<Child>::ConstIterator ConstChildIterator;
00058 List<Child> m_childList;
00059
00060 void CalculateMass(float& fMass, Vec3& v3CenterOfMass, Mat33& m33Inertia) const;
00061
00062 };
00063
00064 }
00065
00066 #endif
00067
00068 #endif // TA_DYNAMICOBJECTGROUP_H
© Copyright 2004-2006 TRUE AXIS PTY LTD Australia. All rights reserved.