Big big update
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
|
||||
extern int g_NumModels;
|
||||
static bool g_debugRenderScene = false;
|
||||
glm::vec3 g_ambientColor = glm::vec3(0.0f);
|
||||
|
||||
static std::string getFileExtension(const std::string& filename)
|
||||
{
|
||||
@@ -218,6 +219,9 @@ void SceneManager::loadScene(const char* filename)
|
||||
{
|
||||
unloadIfScenePresent();
|
||||
|
||||
// Reset ambient color
|
||||
setAmbientColor(glm::vec3(0.0f));
|
||||
|
||||
char filenameBuffer[kMaxPathLength];
|
||||
snprintf(filenameBuffer, kMaxPathLength, "data/levels/%s/%s.xml", filename, filename);
|
||||
|
||||
@@ -243,6 +247,16 @@ void SceneManager::loadScene(const char* filename)
|
||||
pugi::xml_node root = doc.document_element();
|
||||
const char* scenefilename = root.child("LevelDescription").child("SceneFile").attribute("filename").value();
|
||||
|
||||
pugi::xml_node ambientnode = root.child("LevelDescription").child("AmbientColor");
|
||||
if (ambientnode)
|
||||
{
|
||||
glm::vec3 color = glm::vec3(0.0f);
|
||||
color.r = ambientnode.attribute("r").as_float();
|
||||
color.g = ambientnode.attribute("g").as_float();
|
||||
color.b = ambientnode.attribute("b").as_float();
|
||||
setAmbientColor(color);
|
||||
}
|
||||
|
||||
m_sceneName = getFileNameWithoutExtension(scenefilename);
|
||||
|
||||
sprintf(filenameBuffer, "data/levels/%s/%s", filename, scenefilename);
|
||||
@@ -497,6 +511,16 @@ void SceneManager::toggleDebugRender()
|
||||
g_debugRenderScene = !g_debugRenderScene;
|
||||
}
|
||||
|
||||
void SceneManager::setAmbientColor(const glm::vec3& color)
|
||||
{
|
||||
g_ambientColor = color;
|
||||
}
|
||||
|
||||
const glm::vec3& SceneManager::getAmbientColor()
|
||||
{
|
||||
return g_ambientColor;
|
||||
}
|
||||
|
||||
// SceneStaticMesh
|
||||
|
||||
SceneStaticMesh::SceneStaticMesh() :
|
||||
@@ -856,7 +880,7 @@ void R_SceneStaticMesh_BindShader(const glm::mat4& worldMatrix, Texture2D* albed
|
||||
|
||||
if (shader->HasUniform(UNIFORM_SUN_AMBIENT))
|
||||
{
|
||||
glm::vec4 lightColor = glm::vec4(0.1f);
|
||||
glm::vec4 lightColor = glm::vec4(g_sceneManager->getAmbientColor(), 1.0f);
|
||||
g_shaderSystem->SetUniformFloat4(shader, UNIFORM_SUN_AMBIENT, &lightColor);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user