|
|
@@ -4,6 +4,7 @@
|
|
|
#include "Bundle.h"
|
|
|
#include "SceneLoader.h"
|
|
|
#include "Terrain.h"
|
|
|
+#include "Light.h"
|
|
|
|
|
|
namespace gameplay
|
|
|
{
|
|
|
@@ -81,6 +82,7 @@ Scene* SceneLoader::loadInternal(const char* url)
|
|
|
SceneNodeProperty::MATERIAL |
|
|
|
SceneNodeProperty::PARTICLE |
|
|
|
SceneNodeProperty::TERRAIN |
|
|
|
+ SceneNodeProperty::LIGHT |
|
|
|
SceneNodeProperty::CAMERA |
|
|
|
SceneNodeProperty::ROTATE |
|
|
|
SceneNodeProperty::SCALE |
|
|
|
@@ -211,6 +213,7 @@ void SceneLoader::applyNodeProperty(SceneNode& sceneNode, Node* node, const Prop
|
|
|
snp._type == SceneNodeProperty::MATERIAL ||
|
|
|
snp._type == SceneNodeProperty::PARTICLE ||
|
|
|
snp._type == SceneNodeProperty::TERRAIN ||
|
|
|
+ snp._type == SceneNodeProperty::LIGHT ||
|
|
|
snp._type == SceneNodeProperty::CAMERA ||
|
|
|
snp._type == SceneNodeProperty::COLLISION_OBJECT)
|
|
|
{
|
|
|
@@ -261,6 +264,13 @@ void SceneLoader::applyNodeProperty(SceneNode& sceneNode, Node* node, const Prop
|
|
|
SAFE_RELEASE(terrain);
|
|
|
break;
|
|
|
}
|
|
|
+ case SceneNodeProperty::LIGHT:
|
|
|
+ {
|
|
|
+ Light* light = Light::create(p);
|
|
|
+ node->setLight(light);
|
|
|
+ SAFE_RELEASE(light);
|
|
|
+ break;
|
|
|
+ }
|
|
|
case SceneNodeProperty::CAMERA:
|
|
|
{
|
|
|
Camera* camera = Camera::create(p);
|
|
|
@@ -575,6 +585,12 @@ void SceneLoader::buildReferenceTables(Properties* sceneProperties)
|
|
|
addSceneNodeProperty(sceneNode, SceneNodeProperty::TERRAIN, propertyUrl.c_str());
|
|
|
_properties[propertyUrl] = subns;
|
|
|
}
|
|
|
+ else if (strcmp(subns->getNamespace(), "light") == 0)
|
|
|
+ {
|
|
|
+ propertyUrl += "light/" + std::string(subns->getId());
|
|
|
+ addSceneNodeProperty(sceneNode, SceneNodeProperty::LIGHT, propertyUrl.c_str());
|
|
|
+ _properties[propertyUrl] = subns;
|
|
|
+ }
|
|
|
else if (strcmp(subns->getNamespace(), "camera") == 0)
|
|
|
{
|
|
|
propertyUrl += "camera/" + std::string(subns->getId());
|
|
|
@@ -631,6 +647,10 @@ void SceneLoader::buildReferenceTables(Properties* sceneProperties)
|
|
|
{
|
|
|
addSceneNodeProperty(sceneNode, SceneNodeProperty::TERRAIN, ns->getString());
|
|
|
}
|
|
|
+ else if (strcmp(name, "light") == 0)
|
|
|
+ {
|
|
|
+ addSceneNodeProperty(sceneNode, SceneNodeProperty::LIGHT, ns->getString());
|
|
|
+ }
|
|
|
else if (strcmp(name, "camera") == 0)
|
|
|
{
|
|
|
addSceneNodeProperty(sceneNode, SceneNodeProperty::CAMERA, ns->getString());
|