![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2008 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: formationModelData.h,v $ $Revision: 1.16 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DTFORMATIONMODELDATA_H_ 00013 #define DTFORMATIONMODELDATA_H_ 00014 00015 #include "symbolMapper/modelData.h" 00016 #include "entityEditorImpl/entityEditorImplDefines.h" 00017 #include <vlpi/disEnums.h> 00018 00019 class DtVrfSubObjectParameterList; 00020 class DtVrfObjectParameters; 00021 class DtVrfSubObjectParameterEntry; 00022 class DtFormation; 00023 class Dt3dBoundingVolume; 00024 class DtFormationEntry; 00025 00026 DtNewModelDataType(DtFormationModelDataType, 10); 00027 00028 class DT_DLL_entityeditorimpl DtFormationModelData : public DtModelData 00029 { 00030 public: 00031 DtFormationModelData(DtVrfSubObjectParameterEntry*, DtVrfSubObjectParameterList*); 00032 00033 virtual DtModelDataType type() const; 00034 00035 const DtVrfSubObjectParameterEntry* entry() const { return myEntry; }; 00036 const DtVrfSubObjectParameterList* subordinateObjects() const { return mySubordinateObjects; }; 00037 00038 void setFormationEntry(DtFormationEntry* entry) { myFormationEntry = entry; }; 00039 DtFormationEntry* formationEntry() const { return myFormationEntry; }; 00040 00041 void setBoundingVolume(const Dt3dBoundingVolume* bv) { myBoundingVolume = bv; }; 00042 const Dt3dBoundingVolume* boundingVolume() const { return myBoundingVolume; }; 00043 00044 void setFormationData(DtFormationEntry* e, DtFormation* f) { myFormationEntry = e; myFormation = f; }; 00045 const DtFormation* formation() const { return myFormation; }; 00046 DtFormation* formation() { return myFormation; }; 00047 00048 void setParent(DtFormationModelData* d) { myParent = d; }; 00049 const DtFormationModelData* parent() const { return myParent; }; 00050 DtFormationModelData* parent() { return myParent; }; 00051 00052 void setRootNode(bool b) { myRootNode = b; }; 00053 bool rootNode() const { return myRootNode; }; 00054 00055 void setExpanded(bool b) { myExpanded = b; }; 00056 bool expanded() const { return myExpanded; }; 00057 00058 void addChild(DtFormationModelData* c) { myChildren.push_back(c); c->setParent(this); }; 00059 const QVector<DtFormationModelData*>& children() const { return myChildren; }; 00060 QVector<DtFormationModelData*>& children() { return myChildren; }; 00061 00063 virtual DtExtent extent(const DtPoint& origin = DtPoint(0, 0, 0)) const; 00064 00065 virtual const DtPoint* getOriginPoint() const; 00066 00067 virtual DtExtent boundingBox() const; 00068 virtual DtPoint positionOffset() const; 00069 00072 virtual DtPoint centerOfMass() const; 00073 00074 DtPoint offset() const { return calculateOffset(myFormationEntry, myFormation); }; 00075 00078 virtual bool setNewOffsetFromLeader(const DtPoint& newPoint); 00079 00081 virtual QList<DtFormationModelData*> dataAtLeaderPromotionId(int) const; 00082 virtual DtFormationModelData* dataAtPromotionId(int) const; 00083 00084 void removeChild(DtFormationModelData* child) { int iIndex = myChildren.indexOf(child); if (iIndex != -1) myChildren.remove(iIndex); }; 00085 00086 void setParameters(DtVrfObjectParameters* p) { myParameters = p; }; 00087 DtVrfObjectParameters* parameters() const { return myParameters; }; 00088 00089 virtual void repositionInFormation(int iFrom, int iTo); 00090 virtual void repositionInFormation(DtFormation*, int iFrom, int iTo); 00091 00093 virtual void addChildAtPosition(DtFormationModelData* fmd, int iPos); 00094 00096 virtual void clearUnusedNodes(); 00097 00098 virtual int depth() const; 00099 virtual int maxPromotionId() const; 00100 00102 virtual void reworkOffsetsToStandAlone(DtFormation* formation); 00103 00105 virtual void reworkAsOffsetToLeader(DtFormation* formation); 00106 00107 void setEntityMapperKey(const DtEntityMapperKey& k) { myEntityMapperKey = k; }; 00108 virtual DtEntityMapperKey entityMapperKey() const { return myEntityMapperKey; }; 00109 00110 protected: 00111 virtual DtPoint calculateOffset(const DtFormationEntry* entry, const DtFormation* formation) const; 00112 00113 protected: 00114 DtVrfSubObjectParameterList* mySubordinateObjects; 00115 DtVrfSubObjectParameterEntry* myEntry; 00116 bool myRootNode; 00117 bool myExpanded; 00118 DtFormationEntry* myFormationEntry; 00119 const Dt3dBoundingVolume* myBoundingVolume; 00120 DtFormation* myFormation; 00121 DtFormationModelData* myParent; 00122 QVector<DtFormationModelData*> myChildren; 00123 DtVrfObjectParameters* myParameters; 00124 DtEntityMapperKey myEntityMapperKey; 00125 }; 00126 00127 #endif 00128