From a0a1b01ea9f7855f3670ce34591090d150a653c0 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Tue, 7 Jul 2015 17:48:05 -0700 Subject: [PATCH] coalesce dupe action data members: _id and _type --- assignment-client/src/AssignmentAction.cpp | 3 +-- assignment-client/src/AssignmentAction.h | 4 ---- interface/src/InterfaceActionFactory.cpp | 6 +++--- interface/src/avatar/AvatarActionHold.cpp | 5 +++-- interface/src/avatar/AvatarActionHold.h | 4 +--- .../entities/src/EntityActionInterface.h | 8 +++++--- libraries/physics/src/ObjectAction.cpp | 10 +--------- libraries/physics/src/ObjectAction.h | 20 +++++++++---------- libraries/physics/src/ObjectActionOffset.cpp | 11 +++++----- libraries/physics/src/ObjectActionOffset.h | 4 +--- libraries/physics/src/ObjectActionSpring.cpp | 11 +++++----- libraries/physics/src/ObjectActionSpring.h | 4 +--- 12 files changed, 37 insertions(+), 53 deletions(-) diff --git a/assignment-client/src/AssignmentAction.cpp b/assignment-client/src/AssignmentAction.cpp index 58a6eda473..8b5650ee42 100644 --- a/assignment-client/src/AssignmentAction.cpp +++ b/assignment-client/src/AssignmentAction.cpp @@ -14,8 +14,7 @@ #include "AssignmentAction.h" AssignmentAction::AssignmentAction(EntityActionType type, const QUuid& id, EntityItemPointer ownerEntity) : - _id(id), - _type(type), + EntityActionInterface(type, id), _data(QByteArray()), _active(false), _ownerEntity(ownerEntity) { diff --git a/assignment-client/src/AssignmentAction.h b/assignment-client/src/AssignmentAction.h index 77ccf52032..23720bd465 100644 --- a/assignment-client/src/AssignmentAction.h +++ b/assignment-client/src/AssignmentAction.h @@ -24,8 +24,6 @@ public: AssignmentAction(EntityActionType type, const QUuid& id, EntityItemPointer ownerEntity); virtual ~AssignmentAction(); - const QUuid& getID() const { return _id; } - virtual EntityActionType getType() const { return _type; } virtual void removeFromSimulation(EntitySimulation* simulation) const; virtual EntityItemWeakPointer getOwnerEntity() const { return _ownerEntity; } virtual void setOwnerEntity(const EntityItemPointer ownerEntity) { _ownerEntity = ownerEntity; } @@ -36,8 +34,6 @@ public: virtual void deserialize(QByteArray serializedArguments); private: - QUuid _id; - EntityActionType _type; QByteArray _data; protected: diff --git a/interface/src/InterfaceActionFactory.cpp b/interface/src/InterfaceActionFactory.cpp index b721b10af3..363fb66e76 100644 --- a/interface/src/InterfaceActionFactory.cpp +++ b/interface/src/InterfaceActionFactory.cpp @@ -23,11 +23,11 @@ EntityActionPointer interfaceActionFactory(EntityActionType type, const QUuid& i case ACTION_TYPE_NONE: return nullptr; case ACTION_TYPE_OFFSET: - return (EntityActionPointer) new ObjectActionOffset(type, id, ownerEntity); + return (EntityActionPointer) new ObjectActionOffset(id, ownerEntity); case ACTION_TYPE_SPRING: - return (EntityActionPointer) new ObjectActionSpring(type, id, ownerEntity); + return (EntityActionPointer) new ObjectActionSpring(id, ownerEntity); case ACTION_TYPE_HOLD: - return (EntityActionPointer) new AvatarActionHold(type, id, ownerEntity); + return (EntityActionPointer) new AvatarActionHold(id, ownerEntity); } assert(false); diff --git a/interface/src/avatar/AvatarActionHold.cpp b/interface/src/avatar/AvatarActionHold.cpp index b8c7621094..ca903a9771 100644 --- a/interface/src/avatar/AvatarActionHold.cpp +++ b/interface/src/avatar/AvatarActionHold.cpp @@ -17,13 +17,14 @@ const uint16_t AvatarActionHold::holdVersion = 1; -AvatarActionHold::AvatarActionHold(EntityActionType type, const QUuid& id, EntityItemPointer ownerEntity) : - ObjectActionSpring(type, id, ownerEntity), +AvatarActionHold::AvatarActionHold(const QUuid& id, EntityItemPointer ownerEntity) : + ObjectActionSpring(id, ownerEntity), _relativePosition(glm::vec3(0.0f)), _relativeRotation(glm::quat()), _hand("right"), _mine(false) { + _type = ACTION_TYPE_HOLD; #if WANT_DEBUG qDebug() << "AvatarActionHold::AvatarActionHold"; #endif diff --git a/interface/src/avatar/AvatarActionHold.h b/interface/src/avatar/AvatarActionHold.h index 970fb75c0d..3500b5dfa1 100644 --- a/interface/src/avatar/AvatarActionHold.h +++ b/interface/src/avatar/AvatarActionHold.h @@ -19,11 +19,9 @@ class AvatarActionHold : public ObjectActionSpring { public: - AvatarActionHold(EntityActionType type, const QUuid& id, EntityItemPointer ownerEntity); + AvatarActionHold(const QUuid& id, EntityItemPointer ownerEntity); virtual ~AvatarActionHold(); - virtual EntityActionType getType() const { return ACTION_TYPE_HOLD; } - virtual bool updateArguments(QVariantMap arguments); virtual QVariantMap getArguments(); diff --git a/libraries/entities/src/EntityActionInterface.h b/libraries/entities/src/EntityActionInterface.h index a543b65f40..a4f1c8ea15 100644 --- a/libraries/entities/src/EntityActionInterface.h +++ b/libraries/entities/src/EntityActionInterface.h @@ -29,10 +29,10 @@ enum EntityActionType { class EntityActionInterface { public: - EntityActionInterface() { } + EntityActionInterface(EntityActionType type, const QUuid& id) : _id(id), _type(type) { } virtual ~EntityActionInterface() { } - virtual const QUuid& getID() const = 0; - virtual EntityActionType getType() const { assert(false); return ACTION_TYPE_NONE; } + const QUuid& getID() const { return _id; } + EntityActionType getType() const { return _type; } virtual void removeFromSimulation(EntitySimulation* simulation) const = 0; virtual EntityItemWeakPointer getOwnerEntity() const = 0; @@ -68,6 +68,8 @@ protected: static QString extractStringArgument(QString objectName, QVariantMap arguments, QString argumentName, bool& ok, bool required = true); + QUuid _id; + EntityActionType _type; }; diff --git a/libraries/physics/src/ObjectAction.cpp b/libraries/physics/src/ObjectAction.cpp index 3c38b084aa..101b69f03a 100644 --- a/libraries/physics/src/ObjectAction.cpp +++ b/libraries/physics/src/ObjectAction.cpp @@ -15,7 +15,7 @@ ObjectAction::ObjectAction(EntityActionType type, const QUuid& id, EntityItemPointer ownerEntity) : btActionInterface(), - _id(id), + EntityActionInterface(type, id), _active(false), _ownerEntity(ownerEntity) { } @@ -129,11 +129,3 @@ void ObjectAction::setAngularVelocity(glm::vec3 angularVelocity) { rigidBody->activate(); } -QByteArray ObjectAction::serialize() const { - assert(false); - return QByteArray(); -} - -void ObjectAction::deserialize(QByteArray serializedArguments) { - assert(false); -} diff --git a/libraries/physics/src/ObjectAction.h b/libraries/physics/src/ObjectAction.h index 1fb3ea9b10..9c7a2c9b4b 100644 --- a/libraries/physics/src/ObjectAction.h +++ b/libraries/physics/src/ObjectAction.h @@ -27,28 +27,22 @@ public: ObjectAction(EntityActionType type, const QUuid& id, EntityItemPointer ownerEntity); virtual ~ObjectAction(); - const QUuid& getID() const { return _id; } - virtual EntityActionType getType() const { assert(false); return ACTION_TYPE_NONE; } virtual void removeFromSimulation(EntitySimulation* simulation) const; virtual EntityItemWeakPointer getOwnerEntity() const { return _ownerEntity; } virtual void setOwnerEntity(const EntityItemPointer ownerEntity) { _ownerEntity = ownerEntity; } - virtual bool updateArguments(QVariantMap arguments) { return false; } - virtual QVariantMap getArguments() { return QVariantMap(); } + virtual bool updateArguments(QVariantMap arguments) = 0; + virtual QVariantMap getArguments() = 0; // this is called from updateAction and should be overridden by subclasses - virtual void updateActionWorker(float deltaTimeStep) {} + virtual void updateActionWorker(float deltaTimeStep) = 0; // these are from btActionInterface virtual void updateAction(btCollisionWorld* collisionWorld, btScalar deltaTimeStep); virtual void debugDraw(btIDebugDraw* debugDrawer); - virtual QByteArray serialize() const; - virtual void deserialize(QByteArray serializedArguments); - -private: - QUuid _id; - QReadWriteLock _lock; + virtual QByteArray serialize() const = 0; + virtual void deserialize(QByteArray serializedArguments) = 0; protected: @@ -68,6 +62,10 @@ protected: bool tryLockForWrite() { return _lock.tryLockForWrite(); } void unlock() { _lock.unlock(); } +private: + QReadWriteLock _lock; + +protected: bool _active; EntityItemWeakPointer _ownerEntity; }; diff --git a/libraries/physics/src/ObjectActionOffset.cpp b/libraries/physics/src/ObjectActionOffset.cpp index 90e148971a..7cf35b27d7 100644 --- a/libraries/physics/src/ObjectActionOffset.cpp +++ b/libraries/physics/src/ObjectActionOffset.cpp @@ -15,8 +15,8 @@ const uint16_t ObjectActionOffset::offsetVersion = 1; -ObjectActionOffset::ObjectActionOffset(EntityActionType type, const QUuid& id, EntityItemPointer ownerEntity) : - ObjectAction(type, id, ownerEntity) { +ObjectActionOffset::ObjectActionOffset(const QUuid& id, EntityItemPointer ownerEntity) : + ObjectAction(ACTION_TYPE_OFFSET, id, ownerEntity) { #if WANT_DEBUG qDebug() << "ObjectActionOffset::ObjectActionOffset"; #endif @@ -146,13 +146,14 @@ void ObjectActionOffset::deserialize(QByteArray serializedArguments) { QDataStream dataStream(serializedArguments); EntityActionType type; - QUuid id; - uint16_t serializationVersion; - dataStream >> type; assert(type == getType()); + + QUuid id; dataStream >> id; assert(id == getID()); + + uint16_t serializationVersion; dataStream >> serializationVersion; if (serializationVersion != ObjectActionOffset::offsetVersion) { return; diff --git a/libraries/physics/src/ObjectActionOffset.h b/libraries/physics/src/ObjectActionOffset.h index ef79c8eb6b..1918da6996 100644 --- a/libraries/physics/src/ObjectActionOffset.h +++ b/libraries/physics/src/ObjectActionOffset.h @@ -19,11 +19,9 @@ class ObjectActionOffset : public ObjectAction { public: - ObjectActionOffset(EntityActionType type, const QUuid& id, EntityItemPointer ownerEntity); + ObjectActionOffset(const QUuid& id, EntityItemPointer ownerEntity); virtual ~ObjectActionOffset(); - virtual EntityActionType getType() const { return ACTION_TYPE_OFFSET; } - virtual bool updateArguments(QVariantMap arguments); virtual QVariantMap getArguments(); diff --git a/libraries/physics/src/ObjectActionSpring.cpp b/libraries/physics/src/ObjectActionSpring.cpp index 8e55b8b857..cb1dd20472 100644 --- a/libraries/physics/src/ObjectActionSpring.cpp +++ b/libraries/physics/src/ObjectActionSpring.cpp @@ -17,8 +17,8 @@ const float SPRING_MAX_SPEED = 10.0f; const uint16_t ObjectActionSpring::springVersion = 1; -ObjectActionSpring::ObjectActionSpring(EntityActionType type, const QUuid& id, EntityItemPointer ownerEntity) : - ObjectAction(type, id, ownerEntity), +ObjectActionSpring::ObjectActionSpring(const QUuid& id, EntityItemPointer ownerEntity) : + ObjectAction(ACTION_TYPE_SPRING, id, ownerEntity), _positionalTarget(glm::vec3(0.0f)), _linearTimeScale(0.2f), _positionalTargetSet(false), @@ -229,13 +229,14 @@ void ObjectActionSpring::deserialize(QByteArray serializedArguments) { QDataStream dataStream(serializedArguments); EntityActionType type; - QUuid id; - uint16_t serializationVersion; - dataStream >> type; assert(type == getType()); + + QUuid id; dataStream >> id; assert(id == getID()); + + uint16_t serializationVersion; dataStream >> serializationVersion; if (serializationVersion != ObjectActionSpring::springVersion) { return; diff --git a/libraries/physics/src/ObjectActionSpring.h b/libraries/physics/src/ObjectActionSpring.h index 6c576e4545..caa64c3d3a 100644 --- a/libraries/physics/src/ObjectActionSpring.h +++ b/libraries/physics/src/ObjectActionSpring.h @@ -16,11 +16,9 @@ class ObjectActionSpring : public ObjectAction { public: - ObjectActionSpring(EntityActionType type, const QUuid& id, EntityItemPointer ownerEntity); + ObjectActionSpring(const QUuid& id, EntityItemPointer ownerEntity); virtual ~ObjectActionSpring(); - virtual EntityActionType getType() const { return ACTION_TYPE_SPRING; } - virtual bool updateArguments(QVariantMap arguments); virtual QVariantMap getArguments();