14 #ifndef hifi_ScriptableAvatar_h
15 #define hifi_ScriptableAvatar_h
17 #include <AnimationCache.h>
18 #include <AnimSkeleton.h>
19 #include <AvatarData.h>
20 #include <ScriptEngine.h>
21 #include <EntityItem.h>
22 #include "model-networking/ModelCache.h"
24 #include <HelperScriptEngine.h>
108 class ScriptableAvatar :
public AvatarData,
public Dependency {
111 using Clock = std::chrono::system_clock;
112 using TimePoint = Clock::time_point;
134 Q_INVOKABLE
void startAnimation(
const QString& url,
float fps = 30.0f,
float priority = 1.0f,
bool loop =
false,
135 bool hold =
false,
float firstFrame = 0.0f,
float lastFrame = FLT_MAX,
136 const QStringList& maskedJoints = QStringList());
142 Q_INVOKABLE
void stopAnimation();
152 Q_INVOKABLE AnimationDetails getAnimationDetails();
157 Q_INVOKABLE
virtual QStringList getJointNames()
const override;
163 Q_INVOKABLE
virtual int getJointIndex(
const QString& name)
const override;
168 Q_INVOKABLE
virtual void setSkeletonModelURL(
const QUrl& skeletonModelURL)
override;
173 int sendAvatarDataPacket(
bool sendAll =
false)
override;
175 virtual QByteArray toByteArrayStateful(AvatarDataDetail dataDetail,
bool dropFaceTracking =
false)
override;
186 Q_INVOKABLE AvatarEntityMap getAvatarEntityData()
const override;
188 AvatarEntityMap getAvatarEntityDataNonDefault()
const override;
190 AvatarEntityMap getAvatarEntityDataInternal(
bool allProperties)
const;
198 Q_INVOKABLE
void setAvatarEntityData(
const AvatarEntityMap& avatarEntityData)
override;
203 Q_INVOKABLE
void updateAvatarEntity(
const QUuid& entityID,
const QByteArray& entityData)
override;
211 void update(
float deltatime);
217 void setJointMappingsFromNetworkReply();
220 AnimationPointer _animation;
221 AnimationDetails _animationDetails;
222 QStringList _maskedJoints;
223 GeometryResource::Pointer _geometryResource;
225 bool _isRigValid{
false};
227 bool _isAnimationRigValid{
false};
228 std::shared_ptr<AnimSkeleton> _avatarAnimSkeleton;
229 QHash<QString, int> _fstJointIndices;
230 QStringList _fstJointNames;
231 QUrl _skeletonModelFilenameURL;
233 std::map<QUuid, EntityItemPointer> _entities;
236 void updateJointMappings();
238 quint64 _lastSendAvatarDataTime { 0 };
240 TimePoint _nextTraitsSendWindow;
Provides a wrapper around script engine that does not have ScriptManager.
Definition: HelperScriptEngine.h:31