00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef MMS3DSCENE_H_
00034 #define MMS3DSCENE_H_
00035
00036 #include "mmsgui/3d/mms3dpolygonmesh.h"
00037 #include "mmsgui/3d/mms3dobject.h"
00038
00039 class MMS3DScene {
00040 private:
00041
00042 typedef enum {
00043 OBJ_NOTSET = -1,
00044 OBJ_SIZE = 256
00045 } OBJ;
00046
00047
00048 MMS3D_OBJECT objbuf[OBJ_SIZE];
00049 MMS3D_OBJECT *objects[OBJ_SIZE + 1];
00050 int objects_cnt;
00051
00052 MMS3DPolygonMesh mms3dpm;
00053
00054
00055 MMS3DMatrixStack matrixStack;
00056
00057
00058 vector<MMS3DObject*> children;
00059
00060 private:
00061 int newObject(MMS3DObject *object);
00062
00063 MMS3D_OBJECT *getObject(int object);
00064
00065 bool getResultMatrix(MMSMatrix result);
00066
00067 public:
00068
00069 MMS3DScene();
00070
00071 bool setPrimitives(string id, MMS_VERTEX_ARRAY *vertices, MMS_VERTEX_ARRAY *normals,
00072 MMS_VERTEX_ARRAY *texcoords, MMS_INDEX_ARRAY *indices);
00073
00074 void getMeshArrays(MMS_VERTEX_ARRAY ***varrays, MMS_INDEX_ARRAY ***iarrays);
00075
00076 void getObjects(MMS3D_OBJECT ***objects);
00077
00078 void setBaseMatrix(MMSMatrix matrix);
00079
00080 void reset();
00081
00082 bool scale(float sx, float sy, float sz);
00083
00084 bool translate(float tx, float ty, float tz);
00085
00086 bool rotate(float angle, float x, float y, float z);
00087
00088 bool genMatrices();
00089
00090 friend class MMS3DObject;
00091 friend class MMS3DRectangle;
00092 friend class MMS3DSphere;
00093 friend class MMS3DTorus;
00094 friend class MMS3DCylinder;
00095 friend class MMS3DPrimitives;
00096 };
00097
00098 #endif
00099