25 #ifndef FREESCAPE_OBJECT_H 26 #define FREESCAPE_OBJECT_H 28 #include "math/aabb.h" 30 #include "freescape/gfx.h" 44 kNorthPyramidType = 8,
45 kSouthPyramidType = 9,
49 kQuadrilateralType = 12,
58 virtual ObjectType getType() {
return _type; }
59 uint16 getObjectID() {
return _objectID; }
60 uint16 getObjectFlags() {
return _flags; }
62 return _type != kEntranceType && _type != kGroupType && _type != kSensorType;
64 void setObjectFlags(uint32 flags_) { _flags = flags_; }
65 Math::Vector3d getOrigin() {
return _origin; }
66 virtual void setOrigin(Math::Vector3d origin_) { _origin = origin_; };
67 Math::Vector3d getSize() {
return _size; }
69 virtual bool isDrawable() {
return false; }
70 virtual bool isPlanar() {
return false; }
71 virtual void scale(
int factor) = 0;
73 bool isInvisible() {
return _flags & 0x40; }
74 void makeInvisible() { _flags = _flags | 0x40; }
75 void makeVisible() { _flags = _flags & ~0x40; }
76 bool isInitiallyInvisible() {
return _flags & 0x80; }
77 void makeInitiallyInvisible() { _flags = _flags | 0x80; }
78 void makeInitiallyVisible() { _flags = _flags & ~0x80; }
79 bool isDestroyed() {
return _flags & 0x20; }
80 void destroy() { _flags = _flags | 0x20; }
81 void restore() { _flags = _flags & ~0x20; }
82 void toggleVisibility() { _flags = _flags ^ 0x40; }
85 virtual Object *duplicate() = 0;
92 Math::Vector3d _origin, _size, _rotation;
93 Math::AABB _boundingBox;
94 Object *_partOfGroup =
nullptr;
99 #endif // FREESCAPE_OBJECT_H