00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef PEEKABOT_OBJECT_TYPES_HH_INCLUDED
00012 #define PEEKABOT_OBJECT_TYPES_HH_INCLUDED
00013
00014
00015 #include "Types.hh"
00016
00017
00018 #ifdef OBJ_TYPE_ID
00019 # error "OBJ_TYPE_ID already defined"
00020 #else
00021 # define OBJ_TYPE_ID(no, classes) (classes | (no+1))
00022 #endif
00023
00024 #ifdef OBJ_CLASS_ID
00025 # error "OBJ_CLASS_ID already defined"
00026 #else
00027 # define OBJ_CLASS_ID(class_) (1<<(16+class_))
00028 #endif
00029
00030
00031 namespace peekabot
00032 {
00033 enum
00034 {
00035 SCALABLE_CLASS = OBJ_CLASS_ID(0),
00036 VERTEX_BASED_CLASS = OBJ_CLASS_ID(1),
00037 LINE_BASED_CLASS = OBJ_CLASS_ID(2),
00038 JOINT_CLASS = OBJ_CLASS_ID(3),
00039
00040 SPHERE_OBJECT = OBJ_TYPE_ID(0, SCALABLE_CLASS),
00041 CUBE_OBJECT = OBJ_TYPE_ID(1, SCALABLE_CLASS),
00042 CYLINDER_OBJECT = OBJ_TYPE_ID(2, SCALABLE_CLASS),
00043 CIRCLE_OBJECT = OBJ_TYPE_ID(3, SCALABLE_CLASS | LINE_BASED_CLASS),
00044 POLYGON_OBJECT = OBJ_TYPE_ID(4, SCALABLE_CLASS | VERTEX_BASED_CLASS),
00045 LINE_CLOUD_OBJECT = OBJ_TYPE_ID(5, SCALABLE_CLASS | VERTEX_BASED_CLASS | LINE_BASED_CLASS),
00046 POINT_CLOUD_OBJECT = OBJ_TYPE_ID(6, SCALABLE_CLASS | VERTEX_BASED_CLASS),
00047 GRID_OBJECT = OBJ_TYPE_ID(7, SCALABLE_CLASS | LINE_BASED_CLASS),
00048 LABEL_OBJECT = OBJ_TYPE_ID(8, SCALABLE_CLASS),
00049 CAMERA_OBJECT = OBJ_TYPE_ID(9, 0),
00050 OG2D_OBJECT = OBJ_TYPE_ID(10, SCALABLE_CLASS),
00051 OG3D_OBJECT = OBJ_TYPE_ID(11, SCALABLE_CLASS),
00052 TRI_MESH_OBJECT = OBJ_TYPE_ID(12, SCALABLE_CLASS | VERTEX_BASED_CLASS),
00053 GROUP_OBJECT = OBJ_TYPE_ID(13, 0),
00054 SLIDER_OBJECT = OBJ_TYPE_ID(14, JOINT_CLASS),
00055 HINGE_OBJECT = OBJ_TYPE_ID(15, JOINT_CLASS),
00056 POLYLINE_OBJECT = OBJ_TYPE_ID(16, SCALABLE_CLASS | VERTEX_BASED_CLASS | LINE_BASED_CLASS),
00057 MODEL_OBJECT = OBJ_TYPE_ID(17, SCALABLE_CLASS)
00058 };
00059 }
00060
00061
00062 #undef OBJ_CLASS_ID
00063 #undef OBJ_TYPE_ID
00064
00065
00066 #endif // PEEKABOT_OBJECT_TYPES_HH_INCLUDED