00001
00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024
00025
00026 #ifndef NL_SCENE_GROUP_H
00027 #define NL_SCENE_GROUP_H
00028
00029 #include "nel/misc/types_nl.h"
00030 #include "nel/misc/vector.h"
00031 #include "nel/misc/quat.h"
00032 #include <vector>
00033
00034 namespace NLMISC
00035 {
00036 class IStream;
00037 struct EStream;
00038 }
00039
00040 namespace NL3D {
00041
00042 class CScene;
00043 class CTransformShape;
00056 class CInstanceGroup
00057 {
00058 public:
00060 class CInstance
00061 {
00062 public:
00064 std::string Name;
00065
00066
00067 sint32 nParent;
00068
00069
00070 NLMISC::CQuat Rot;
00071 NLMISC::CVector Pos;
00072 NLMISC::CVector Scale;
00073
00075 void serial (NLMISC::IStream& f);
00076 };
00077
00079 typedef std::vector<CInstance> TInstanceArray;
00080
00082 uint getNumInstance () const;
00083
00085 const std::string& getInstanceName (uint instanceNb) const;
00086
00088 const NLMISC::CVector& getInstancePos (uint instanceNb) const;
00089
00091 const NLMISC::CQuat& getInstanceRot (uint instanceNb) const;
00092
00093
00094 const NLMISC::CVector& getInstanceScale (uint instanceNb) const;
00095
00096
00097 const int getInstanceParent (uint instanceNb) const;
00098
00100 void build (const TInstanceArray& array);
00101
00103 void serial (NLMISC::IStream& f);
00104
00106 bool addToScene (CScene& scene);
00107
00109 bool removeFromScene (CScene& scene);
00110
00111 private:
00112 TInstanceArray _InstancesInfos;
00113 std::vector<CTransformShape*> _Instances;
00114 };
00115
00116
00117 }
00118
00119
00120 #endif // NL_SCENE_GROUP_H
00121
00122