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>
106 class ScriptableAvatar :
public AvatarData,
public Dependency {
109 using Clock = std::chrono::system_clock;
110 using TimePoint = Clock::time_point;
132 Q_INVOKABLE
void startAnimation(
const QString& url,
float fps = 30.0f,
float priority = 1.0f,
bool loop =
false,
133 bool hold =
false,
float firstFrame = 0.0f,
float lastFrame = FLT_MAX,
134 const QStringList& maskedJoints = QStringList());
140 Q_INVOKABLE
void stopAnimation();
150 Q_INVOKABLE AnimationDetails getAnimationDetails();
155 Q_INVOKABLE
virtual QStringList getJointNames()
const override;
161 Q_INVOKABLE
virtual int getJointIndex(
const QString& name)
const override;
166 Q_INVOKABLE
virtual void setSkeletonModelURL(
const QUrl& skeletonModelURL)
override;
171 int sendAvatarDataPacket(
bool sendAll =
false)
override;
173 virtual QByteArray toByteArrayStateful(AvatarDataDetail dataDetail,
bool dropFaceTracking =
false)
override;
184 Q_INVOKABLE AvatarEntityMap getAvatarEntityData()
const override;
186 AvatarEntityMap getAvatarEntityDataNonDefault()
const override;
188 AvatarEntityMap getAvatarEntityDataInternal(
bool allProperties)
const;
196 Q_INVOKABLE
void setAvatarEntityData(
const AvatarEntityMap& avatarEntityData)
override;
201 Q_INVOKABLE
void updateAvatarEntity(
const QUuid& entityID,
const QByteArray& entityData)
override;
209 void update(
float deltatime);
215 void setJointMappingsFromNetworkReply();
218 AnimationPointer _animation;
219 AnimationDetails _animationDetails;
220 QStringList _maskedJoints;
221 GeometryResource::Pointer _geometryResource;
223 bool _isRigValid{
false};
225 bool _isAnimationRigValid{
false};
226 std::shared_ptr<AnimSkeleton> _avatarAnimSkeleton;
227 QHash<QString, int> _fstJointIndices;
228 QStringList _fstJointNames;
229 QUrl _skeletonModelFilenameURL;
231 std::map<QUuid, EntityItemPointer> _entities;
234 void updateJointMappings();
236 quint64 _lastSendAvatarDataTime { 0 };
238 TimePoint _nextTraitsSendWindow;
Provides a wrapper around script engine that does not have ScriptManager.
Definition: HelperScriptEngine.h:31