15 #ifndef hifi_AnimationPropertyGroup_h
16 #define hifi_AnimationPropertyGroup_h
20 #include <glm/glm.hpp>
22 #include "EntityItemPropertiesMacros.h"
23 #include "PropertyGroup.h"
26 class EncodeBitstreamParams;
28 class EntityTreeElementExtraEncodeData;
29 class ReadBitstreamToTreeParams;
33 class AnimationPropertyGroup :
public PropertyGroup {
35 static const float MAXIMUM_POSSIBLE_FRAME;
38 virtual void copyToScriptValue(
const EntityPropertyFlags& desiredProperties,
ScriptValue& properties,
41 bool isMyOwnAvatarEntity)
const override;
42 virtual void copyFromScriptValue(
const ScriptValue&
object,
const QSet<QString> &namesSet,
bool& _defaultSettings)
override;
44 void merge(
const AnimationPropertyGroup& other);
46 virtual void debugDump()
const override;
47 virtual void listChangedProperties(QList<QString>& out)
override;
50 EntityPropertyFlags& requestedProperties,
51 EntityPropertyFlags& propertyFlags,
52 EntityPropertyFlags& propertiesDidntFit,
54 OctreeElement::AppendState& appendState)
const override;
56 virtual bool decodeFromEditPacket(EntityPropertyFlags& propertyFlags,
57 const unsigned char*& dataAt,
int& processedBytes)
override;
58 virtual void markAllChanged()
override;
59 virtual EntityPropertyFlags getChangedProperties()
const override;
68 virtual EntityPropertyFlags getEntityProperties(EncodeBitstreamParams& params)
const override;
70 virtual void appendSubclassData(
OctreePacketData* packetData, EncodeBitstreamParams& params,
71 EntityTreeElementExtraEncodeDataPointer entityTreeElementExtraEncodeData,
72 EntityPropertyFlags& requestedProperties,
73 EntityPropertyFlags& propertyFlags,
74 EntityPropertyFlags& propertiesDidntFit,
76 OctreeElement::AppendState& appendState)
const override;
78 virtual int readEntitySubclassDataFromBuffer(
const unsigned char* data,
int bytesLeftToRead,
79 ReadBitstreamToTreeParams& args,
80 EntityPropertyFlags& propertyFlags,
bool overwriteLocalData,
81 bool& somethingChanged)
override;
83 float getNumFrames()
const;
84 float computeLoopedFrame(
float frame)
const;
85 bool isValidAndRunning()
const;
87 DEFINE_PROPERTY_REF(PROP_ANIMATION_URL, URL, url, QString,
"");
88 DEFINE_PROPERTY(PROP_ANIMATION_FPS, FPS, fps,
float, 30.0f);
89 DEFINE_PROPERTY(PROP_ANIMATION_FRAME_INDEX, CurrentFrame, currentFrame,
float, 0.0f);
90 DEFINE_PROPERTY(PROP_ANIMATION_PLAYING, Running, running,
bool,
false);
91 DEFINE_PROPERTY(PROP_ANIMATION_LOOP, Loop, loop,
bool,
true);
92 DEFINE_PROPERTY(PROP_ANIMATION_FIRST_FRAME, FirstFrame, firstFrame,
float, 0.0f);
93 DEFINE_PROPERTY(PROP_ANIMATION_LAST_FRAME, LastFrame, lastFrame,
float, MAXIMUM_POSSIBLE_FRAME);
94 DEFINE_PROPERTY(PROP_ANIMATION_HOLD, Hold, hold,
bool,
false);
95 DEFINE_PROPERTY(PROP_ANIMATION_ALLOW_TRANSLATION, AllowTranslation, allowTranslation,
bool,
true);
98 friend bool operator==(
const AnimationPropertyGroup& a,
const AnimationPropertyGroup& b);
99 friend bool operator!=(
const AnimationPropertyGroup& a,
const AnimationPropertyGroup& b);
100 void setFromOldAnimationSettings(
const QString& value);
Definition: EntityItemProperties.h:106
Handles packing of the data portion of PacketType_OCTREE_DATA messages.
Definition: OctreePacketData.h:93
Provides an engine-independent interface for a scripting engine.
Definition: ScriptEngine.h:93
[ScriptInterface] Provides an engine-independent interface for QScriptValue
Definition: ScriptValue.h:40