mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 18:44:01 +02:00
add UPDATE_COLLISION_GROUP and UPDATE_MOTION_TYPE
This commit is contained in:
parent
97d1dc4200
commit
11e7339e9e
2 changed files with 25 additions and 24 deletions
|
@ -948,7 +948,7 @@ void EntityItem::updatePosition(const glm::vec3& value) {
|
|||
if (_position != value) {
|
||||
_position = value;
|
||||
recalculateCollisionShape();
|
||||
_updateFlags |= UPDATE_POSITION;
|
||||
_updateFlags |= EntityItem::UPDATE_POSITION;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -957,7 +957,7 @@ void EntityItem::updatePositionInMeters(const glm::vec3& value) {
|
|||
if (_position != position) {
|
||||
_position = position;
|
||||
recalculateCollisionShape();
|
||||
_updateFlags |= UPDATE_POSITION;
|
||||
_updateFlags |= EntityItem::UPDATE_POSITION;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -965,7 +965,7 @@ void EntityItem::updateDimensions(const glm::vec3& value) {
|
|||
if (_dimensions != value) {
|
||||
_dimensions = value;
|
||||
recalculateCollisionShape();
|
||||
_updateFlags |= UPDATE_SHAPE;
|
||||
_updateFlags |= EntityItem::UPDATE_SHAPE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -974,7 +974,7 @@ void EntityItem::updateDimensionsInMeters(const glm::vec3& value) {
|
|||
if (_dimensions != dimensions) {
|
||||
_dimensions = dimensions;
|
||||
recalculateCollisionShape();
|
||||
_updateFlags |= UPDATE_SHAPE;
|
||||
_updateFlags |= EntityItem::UPDATE_SHAPE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -982,21 +982,21 @@ void EntityItem::updateRotation(const glm::quat& rotation) {
|
|||
if (_rotation != rotation) {
|
||||
_rotation = rotation;
|
||||
recalculateCollisionShape();
|
||||
_updateFlags |= UPDATE_POSITION;
|
||||
_updateFlags |= EntityItem::UPDATE_POSITION;
|
||||
}
|
||||
}
|
||||
|
||||
void EntityItem::updateMass(float value) {
|
||||
if (_mass != value) {
|
||||
_mass = value;
|
||||
_updateFlags |= UPDATE_MASS;
|
||||
_updateFlags |= EntityItem::UPDATE_MASS;
|
||||
}
|
||||
}
|
||||
|
||||
void EntityItem::updateVelocity(const glm::vec3& value) {
|
||||
if (_velocity != value) {
|
||||
_velocity = value;
|
||||
_updateFlags |= UPDATE_VELOCITY;
|
||||
_updateFlags |= EntityItem::UPDATE_VELOCITY;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1004,14 +1004,14 @@ void EntityItem::updateVelocityInMeters(const glm::vec3& value) {
|
|||
glm::vec3 velocity = value / (float) TREE_SCALE;
|
||||
if (_velocity != velocity) {
|
||||
_velocity = velocity;
|
||||
_updateFlags |= UPDATE_VELOCITY;
|
||||
_updateFlags |= EntityItem::UPDATE_VELOCITY;
|
||||
}
|
||||
}
|
||||
|
||||
void EntityItem::updateGravity(const glm::vec3& value) {
|
||||
if (_gravity != value) {
|
||||
_gravity = value;
|
||||
_updateFlags |= UPDATE_VELOCITY;
|
||||
_updateFlags |= EntityItem::UPDATE_VELOCITY;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1019,35 +1019,35 @@ void EntityItem::updateGravityInMeters(const glm::vec3& value) {
|
|||
glm::vec3 gravity = value / (float) TREE_SCALE;
|
||||
if (_gravity != gravity) {
|
||||
_gravity = gravity;
|
||||
_updateFlags |= UPDATE_VELOCITY;
|
||||
_updateFlags |= EntityItem::UPDATE_VELOCITY;
|
||||
}
|
||||
}
|
||||
|
||||
void EntityItem::updateAngularVelocity(const glm::vec3& value) {
|
||||
if (_angularVelocity != value) {
|
||||
_angularVelocity = value;
|
||||
_updateFlags |= UPDATE_VELOCITY;
|
||||
_updateFlags |= EntityItem::UPDATE_VELOCITY;
|
||||
}
|
||||
}
|
||||
|
||||
void EntityItem::updateIgnoreForCollisions(bool value) {
|
||||
if (_ignoreForCollisions != value) {
|
||||
_ignoreForCollisions = value;
|
||||
_updateFlags |= UPDATE_COLLISION;
|
||||
_updateFlags |= EntityItem::UPDATE_COLLISION_GROUP;
|
||||
}
|
||||
}
|
||||
|
||||
void EntityItem::updateCollisionsWillMove(bool value) {
|
||||
if (_collisionsWillMove != value) {
|
||||
_collisionsWillMove = value;
|
||||
_updateFlags |= UPDATE_COLLISION;
|
||||
_updateFlags |= EntityItem::UPDATE_MOTION_TYPE;
|
||||
}
|
||||
}
|
||||
|
||||
void EntityItem::updateLifetime(float value) {
|
||||
if (_lifetime != value) {
|
||||
_lifetime = value;
|
||||
_updateFlags |= UPDATE_LIFETIME;
|
||||
_updateFlags |= EntityItem::UPDATE_LIFETIME;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,22 +35,23 @@ class EntityTreeElementExtraEncodeData;
|
|||
#define DONT_ALLOW_INSTANTIATION virtual void pureVirtualFunctionPlaceHolder() = 0;
|
||||
#define ALLOW_INSTANTIATION virtual void pureVirtualFunctionPlaceHolder() { };
|
||||
|
||||
enum EntityUpdateFlags {
|
||||
UPDATE_POSITION = 0x0001,
|
||||
UPDATE_VELOCITY = 0x0002,
|
||||
UPDATE_MASS = 0x0004,
|
||||
UPDATE_COLLISION = 0x0008,
|
||||
UPDATE_SHAPE = 0x0010,
|
||||
UPDATE_LIFETIME = 0x0020
|
||||
//UPDATE_APPEARANCE = 0x8000,
|
||||
};
|
||||
|
||||
/// EntityItem class this is the base class for all entity types. It handles the basic properties and functionality available
|
||||
/// to all other entity types. In particular: postion, size, rotation, age, lifetime, velocity, gravity. You can not instantiate
|
||||
/// one directly, instead you must only construct one of it's derived classes with additional features.
|
||||
class EntityItem {
|
||||
|
||||
public:
|
||||
enum EntityUpdateFlags {
|
||||
UPDATE_POSITION = 0x0001,
|
||||
UPDATE_VELOCITY = 0x0002,
|
||||
UPDATE_MASS = 0x0004,
|
||||
UPDATE_COLLISION_GROUP = 0x0008,
|
||||
UPDATE_MOTION_TYPE = 0x0010,
|
||||
UPDATE_SHAPE = 0x0020,
|
||||
UPDATE_LIFETIME = 0x0040
|
||||
//UPDATE_APPEARANCE = 0x8000,
|
||||
};
|
||||
|
||||
DONT_ALLOW_INSTANTIATION // This class can not be instantiated directly
|
||||
|
||||
EntityItem(const EntityItemID& entityItemID);
|
||||
|
|
Loading…
Reference in a new issue