/* Copyright 2003-2013 ROBLOX Corporation, All Rights Reserved */ #pragma once #include "Util/SteppedInstance.h" #include "Util/RunStateOwner.h" namespace RBX { // class Workspace; // class Primitive; // class PartInstance; class Animator; extern const char* const sAnimationController; class AnimationController : public DescribedCreatable , public IStepped { private: typedef DescribedCreatable Super; shared_ptr animator; Animator* getAnimator(); // Instance /*override*/ bool askSetParent(const Instance* instance) const; /*override*/ void onServiceProvider(ServiceProvider* oldProvider, ServiceProvider* newProvider); // IStepped /*override*/ void onStepped(const Stepped& event); public: AnimationController(); virtual ~AnimationController(); shared_ptr loadAnimation(shared_ptr animation); shared_ptr getPlayingAnimationTracks(); rbx::signal)> animationPlayedSignal; }; } // namespace RBX