ISceneNode* SceneManager::createSceneNode(const core::string&name, ISceneNode* parent) { core::string strName=name; if(strName==mT("")) { strName=mT("SceneNode#")+core::StringConverter::toString(++m_nameIDGenerator); } /* SceneNodeMap::iterator it= m_Children.find(strName); if(it!=m_Children.end()) { gSceneLoggerSystem.log(mT("CreateSceneNode: SceneNode with name:")+strName+mT(" is already exists in the scene manager"),ELL_WARNING,EVL_Heavy); //pick new name strName+=core::StringConverter::toString(++m_nameIDGenerator); }*/ ISceneNode* node=new ISceneNode(strName,m_objectsID.GetNextID(),this); addSceneNode(node, parent); /* m_objectsID.AddObject(node,node->getID()); m_Children[strName]=node; node->_OnAddedToSceneManager(this); if (parent) parent->addChild(node); else m_rootNode->addChild(node);*/ return node; }
void SceneManager::addSceneNode(const ISceneNodePtr& node, ISceneNode* parent) { if(!node) return; SceneNodeMap::iterator it= m_Children.find(node->getNodeName()); if(it!=m_Children.end()) { gSceneLoggerSystem.log(mT("AddSceneNode: SceneNode with name:")+node->getNodeName()+mT(" is already exists in the scene manager"),ELL_WARNING,EVL_Heavy); node->setNodeName(node->getNodeName()+mT("#")+core::StringConverter::toString(++m_nameIDGenerator)+mT("_")); addSceneNode(node); return; } node->SetSceneManager(this); { OS::ScopedLock lock(m_nodesMutex); m_Children[node->getNodeName()]=node; uint id=m_objectsID.AddObject(node,node->getID()); node->setID(id); } node->_OnAddedToSceneManager(this); if (parent) parent->addChild(node); else if (m_rootNode) m_rootNode->addChild(node); else gSceneLoggerSystem.log("AddSceneNode: parent node is null, and there is no root node set!", ELL_WARNING); }
/** Creates a Camera. Without cameras you cannot see the scene which shall be rendered. \return Pointer to the specified Camera or Camera derived class object. */ template <class T> T* createCamera() { T* NewCamera = MemoryManager::createMemory<T>("scene::Camera"); addSceneNode(NewCamera); setActiveCamera(NewCamera); return NewCamera; }
CameraNode* SceneManager::createCamera(const core::string&name, ISceneNode* parent) { core::string strName=name; if(strName==mT("")) { strName=mT("CameraNode#")+core::StringConverter::toString(++m_nameIDGenerator); } CameraNode* node=new CameraNode(strName,m_objectsID.GetNextID(),this); addSceneNode(node, parent); return node; }
irr::scene::ISceneNode *CIrrOdeSceneNodeFactory::addSceneNode (const c8 *typeName, irr::scene::ISceneNode *parent) { irr::core::stringc sName=irr::core::stringc(typeName); for (u32 i=0; i<m_cNames.size(); i++) if (m_cNames[i]==sName) { #ifdef _TRACE_FACTORY printf("CIrrOdeSceneNodeFactory::addSceneNode(\"%s\"): \"%s\"\n",typeName,m_cNames[i].c_str()); #endif return addSceneNode(m_cTypes[i],parent); } return NULL; }
//! adds a scene node to the scene graph based on its type name ISceneNode* CIrrKlangSceneNodeFactory::addSceneNode(const c8* typeName, ISceneNode* parent) { return addSceneNode( getTypeFromName(typeName), parent ); }