
Added the DDS Texture Loading for future use Added the gamepad class for future use Added first child method to the scenegraph Added RGB to intensity and lerp methods to the shared methods class Added the terrain node class with normals Fixed issue with submeshnode not passing the world transform to the actual meshes
90 lines
1.6 KiB
C++
90 lines
1.6 KiB
C++
#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;
|
|
}
|
|
|
|
SceneNodePointer SceneGraph::GetFirstChild()
|
|
{
|
|
SceneNodePointer firstChild = nullptr;
|
|
if (_children.size() > 0)
|
|
{
|
|
firstChild = _children.front();
|
|
}
|
|
return firstChild;
|
|
} |