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_FACTORY_H_INCLUDED__ 00006 #define __I_SCENE_NODE_FACTORY_H_INCLUDED__ 00007 00008 #include "IReferenceCounted.h" 00009 #include "ESceneNodeTypes.h" 00010 00011 namespace irr 00012 { 00013 00014 namespace scene 00015 { 00016 class ISceneNode; 00017 00019 00027 class ISceneNodeFactory : public virtual IReferenceCounted 00028 { 00029 public: 00031 00035 virtual ISceneNode* addSceneNode(ESCENE_NODE_TYPE type, ISceneNode* parent=0) = 0; 00036 00038 00042 virtual ISceneNode* addSceneNode(const c8* typeName, ISceneNode* parent=0) = 0; 00043 00045 virtual u32 getCreatableSceneNodeTypeCount() const = 0; 00046 00048 00050 virtual ESCENE_NODE_TYPE getCreateableSceneNodeType(u32 idx) const = 0; 00051 00053 00055 virtual const c8* getCreateableSceneNodeTypeName(u32 idx) const = 0; 00056 00058 00060 virtual const c8* getCreateableSceneNodeTypeName(ESCENE_NODE_TYPE type) const = 0; 00061 }; 00062 00063 00064 } // end namespace scene 00065 } // end namespace irr 00066 00067 #endif 00068