Irrlicht 3D Engine
ISceneNodeAnimator.h
Go to the documentation of this file.
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