00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt 00002 // This file is part of the "Irrlicht Engine". 00003 // For conditions of distribution and use, see copyright notice in irrlicht.h 00004 00005 #ifndef __I_SCENE_NODE_ANIMATOR_H_INCLUDED__ 00006 #define __I_SCENE_NODE_ANIMATOR_H_INCLUDED__ 00007 00008 #include "IReferenceCounted.h" 00009 #include "vector3d.h" 00010 #include "ESceneNodeAnimatorTypes.h" 00011 #include "IAttributeExchangingObject.h" 00012 #include "IEventReceiver.h" 00013 00014 namespace irr 00015 { 00016 namespace io 00017 { 00018 class IAttributes; 00019 } // end namespace io 00020 namespace scene 00021 { 00022 class ISceneNode; 00023 class ISceneManager; 00024 00026 00030 class ISceneNodeAnimator : public io::IAttributeExchangingObject, public IEventReceiver 00031 { 00032 public: 00034 00036 virtual void animateNode(ISceneNode* node, u32 timeMs) =0; 00037 00039 00041 virtual ISceneNodeAnimator* createClone(ISceneNode* node, 00042 ISceneManager* newManager=0) =0; 00043 00045 00047 virtual bool isEventReceiverEnabled() const 00048 { 00049 return false; 00050 } 00051 00053 virtual bool OnEvent(const SEvent& event) 00054 { 00055 return false; 00056 } 00057 00059 virtual ESCENE_NODE_ANIMATOR_TYPE getType() const 00060 { 00061 return ESNAT_UNKNOWN; 00062 } 00063 00065 00067 virtual bool hasFinished(void) const 00068 { 00069 return false; 00070 } 00071 }; 00072 00073 00074 } // end namespace scene 00075 } // end namespace irr 00076 00077 #endif 00078