00001 00011 #ifndef __TVU_3DOBJECT_H__ 00012 #define __TVU_3DOBJECT_H__ 00013 00014 #ifndef __TVU_TYPESDEF_H__ 00015 #include "tvu_typesdef.h" 00016 #endif 00017 00018 #ifndef __TVU_VISU3D_APPLICATION_H__ 00019 #include "tvu_visu3d.application.h" 00020 #endif 00021 /*========================================================*/ 00022 00023 #define CLASSNAME_3DOBJECT "3DObject" 00024 #define CLASSNAME_3DOBJECT_ID 10000 00025 00026 #define ENAME_3DOBJECT_RGB "color" 00027 #define ENAME_3DOBJECT_PRIMITIVES "primitives" 00028 #define ENAME_3DOBJECT_CHILDREN "sub_part" 00029 #define ENAME_3DOBJECT_POSITION "position" 00030 #define ENAME_3DOBJECT_ANGLES "angles" 00031 #define ENAME_3DOBJECT_SIZE "size" 00032 /*--------------------------------------------------------*/ 00034 class CT3DObject : public CTReferableObject 00035 { 00036 public: 00038 CT3DObject(); 00039 virtual ~CT3DObject() { Delete(); }; 00040 DEFINE_ID_FUNCTIONS(CT3DObject, CTReferableObject, CLASSNAME_3DOBJECT_ID, CLASSNAME_3DOBJECT) 00041 public: 00043 virtual TBOOL Is3DObject() { return TTRUE; }; 00044 virtual TPOINT3D GetLocation() { return m_Position.POINT3D(); }; 00045 public: 00047 virtual TBOOL OnPostLoad(LPTBYTE* lpBuffers); 00049 virtual CTList GetSaveLoadObjects(TBOOL bOnLoad = TTRUE); 00052 virtual TBOOL Display(THFILE lpDevice = TNULL); 00053 virtual TBOOL OnDisplaying(THFILE lpDevice); 00055 virtual TBOOL Move(); 00056 virtual TBOOL MoveTo(CTPoint3D& Position); 00057 virtual TBOOL Rotate(); 00058 virtual TBOOL Project(); 00060 virtual TBOOL BuildObject(); 00062 virtual TBOOL IsWellConstructed(); 00064 virtual TBOOL ReferTo(CTReferableObject* lpObject); 00066 virtual TBOOL GetBoundary(BOUNDARY& Boundary); 00068 void SetColor(CTRGB& RGBColor) { SetColor(RGBColor.r, RGBColor.g, RGBColor.b); }; 00069 void SetColor(TINT r, TINT g, TINT b); 00070 void SetColor(TLPCSTR lpStrColor); 00071 public: 00073 CT3DObject* GetChild(TLPCSTR lpName); 00074 CT3DObject* GetSubPart(TLPCSTR lpName); 00075 public: 00077 virtual void Delete(); 00078 public: 00080 CT3DObject& operator = (CT3DObject& AnObject); 00081 public: 00084 CTPoint3D& GetPosition() { return m_Position; }; 00085 CTAngles& GetAngles() { return m_Angles; }; 00086 CTSize3D& GetSize() { return m_Size; }; 00088 CTList GetPrimitives(){ return m_Primitives; }; 00089 CTList GetChildren(){ return m_Children; }; 00090 CTList GetSiblings(){ return m_Siblings; }; 00091 protected: 00094 CTRGB m_RGB; 00096 CTPoint3D m_Position; 00097 CTAngles m_Angles; 00098 CTSize3D m_Size, m_SizeOriginal; 00101 CTList m_Primitives; 00103 CTList m_Children; 00105 CTList m_Siblings; 00106 }; 00107 /*========================================================*/ 00108 #endif