29 #ifndef _CEGUIAnimationManager_h_
30 #define _CEGUIAnimationManager_h_
32 #include "CEGUI/Singleton.h"
33 #include "CEGUI/String.h"
38 # pragma warning(push)
39 # pragma warning(disable : 4251)
46 class CEGUIEXPORT AnimationManager :
47 public Singleton<AnimationManager>,
48 public AllocatedObject<AnimationManager>
52 static const String XMLSchemaName;
66 AnimationManager(
void);
76 ~AnimationManager(
void);
89 void addInterpolator(Interpolator* interpolator);
95 void removeInterpolator(Interpolator* interpolator);
101 Interpolator* getInterpolator(
const String& type)
const;
110 Animation* createAnimation(
const String& name =
"");
116 void destroyAnimation(Animation* animation);
122 void destroyAnimation(
const String& name);
128 void destroyAllAnimations();
134 Animation* getAnimation(
const String& name)
const;
147 bool isAnimationPresent(
const String& name)
const;
153 Animation* getAnimationAtIdx(
size_t index)
const;
159 size_t getNumAnimations()
const;
168 AnimationInstance* instantiateAnimation(Animation* animation);
177 AnimationInstance* instantiateAnimation(
const String& name);
183 void destroyAnimationInstance(AnimationInstance* instance);
189 void destroyAllInstancesOfAnimation(Animation* animation);
195 void destroyAllAnimationInstances();
201 AnimationInstance* getAnimationInstanceAtIdx(
size_t index)
const;
208 size_t getNumAnimationInstances()
const;
220 void autoStepInstances(
float delta);
234 void loadAnimationsFromXML(
const String& filename,
235 const String& resourceGroup =
"");
245 void loadAnimationsFromString(
const String& source);
257 void writeAnimationDefinitionToStream(
const Animation& animation,
OutStream& out_stream)
const;
273 String getAnimationDefinitionAsString(
const Animation& animation)
const;
283 static void setDefaultResourceGroup(
const String& resourceGroup)
285 s_defaultResourceGroup = resourceGroup;
297 static const String& getDefaultResourceGroup()
299 return s_defaultResourceGroup;
303 typedef std::map<String, Interpolator*, std::less<String>
304 CEGUI_MAP_ALLOC(String, Interpolator*)> InterpolatorMap;
305 String generateUniqueAnimationName();
308 InterpolatorMap d_interpolators;
309 typedef std::vector<Interpolator*
310 CEGUI_VECTOR_ALLOC(Interpolator*)> BasicInterpolatorList;
312 BasicInterpolatorList d_basicInterpolators;
314 typedef std::map<String, Animation*> AnimationMap;
316 AnimationMap d_animations;
318 typedef std::multimap<Animation*, AnimationInstance*, std::less<Animation*>
319 CEGUI_MULTIMAP_ALLOC(Animation*, AnimationInstance*)> AnimationInstanceMap;
321 AnimationInstanceMap d_animationInstances;
323 static String s_defaultResourceGroup;
325 static const String GeneratedAnimationNameBase;
327 unsigned long d_uid_counter;
332 #if defined(_MSC_VER)
333 # pragma warning(pop)
336 #endif // end of guard _CEGUIAnimationManager_h_