Added the ASSIMP library
Added the files provided for the tutorial Added the SplitMeshNode and SubMeshNode classes
This commit is contained in:
80
Graphics2/SceneGraph.cpp
Normal file
80
Graphics2/SceneGraph.cpp
Normal file
@ -0,0 +1,80 @@
|
||||
#include "SceneGraph.h"
|
||||
|
||||
bool SceneGraph::Initialise()
|
||||
{
|
||||
bool currentStatus = true;
|
||||
|
||||
for (SceneNodePointer& currentSceneGraphPtr : _children)
|
||||
{
|
||||
currentStatus = currentSceneGraphPtr->Initialise();
|
||||
if (!currentStatus)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return currentStatus;
|
||||
}
|
||||
|
||||
void SceneGraph::Update(FXMMATRIX& currentWorldTransformation)
|
||||
{
|
||||
SceneNode::Update(currentWorldTransformation);
|
||||
|
||||
XMMATRIX combinedWorldTransform = XMLoadFloat4x4(&_combinedWorldTransformation);
|
||||
for (SceneNodePointer& currentSceneGraphPtr : _children)
|
||||
{
|
||||
currentSceneGraphPtr->Update(combinedWorldTransform);
|
||||
}
|
||||
}
|
||||
|
||||
void SceneGraph::Render()
|
||||
{
|
||||
for (SceneNodePointer& currentSceneGraphPtr : _children)
|
||||
{
|
||||
currentSceneGraphPtr->Render();
|
||||
}
|
||||
}
|
||||
|
||||
void SceneGraph::Shutdown()
|
||||
{
|
||||
for (SceneNodePointer& currentSceneGraphPtr : _children)
|
||||
{
|
||||
currentSceneGraphPtr->Shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
void SceneGraph::Add(SceneNodePointer node)
|
||||
{
|
||||
_children.push_back(node);
|
||||
}
|
||||
|
||||
void SceneGraph::Remove(SceneNodePointer node)
|
||||
{
|
||||
for (SceneNodePointer& currentSceneGraphPtr : _children)
|
||||
{
|
||||
if (currentSceneGraphPtr == node)
|
||||
{
|
||||
_children.remove(currentSceneGraphPtr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SceneNodePointer SceneGraph::Find(wstring name)
|
||||
{
|
||||
if (_name == name)
|
||||
{
|
||||
return shared_from_this();
|
||||
}
|
||||
|
||||
SceneNodePointer foundValue = nullptr;
|
||||
for (SceneNodePointer& currentSceneGraphPtr : _children)
|
||||
{
|
||||
foundValue = currentSceneGraphPtr->Find(name);
|
||||
if (foundValue != nullptr)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
return foundValue;
|
||||
}
|
Reference in New Issue
Block a user