Bladeren bron

Fixing a bug in SceneNode

Panagiotis Christopoulos Charitos 14 jaren geleden
bovenliggende
commit
8ed946ab3c
5 gewijzigde bestanden met toevoegingen van 38 en 5 verwijderingen
  1. 1 0
      src/Main.cpp
  2. 15 3
      src/Scene/ParticleEmitter.cpp
  3. 19 0
      src/Scene/Scene.cpp
  4. 1 1
      src/Scene/SceneNode.cpp
  5. 2 1
      src/Scene/SceneNode.h

+ 1 - 0
src/Main.cpp

@@ -137,6 +137,7 @@ void init()
 	cam->moveLocalZ(5.7);
 	cam->moveLocalX(-0.3);
 	AppSingleton::getInstance().setActiveCam(cam);
+	INFO(cam->getSceneNodeName());
 
 	OrthographicCamera* ocam = new OrthographicCamera(false, NULL);
 	ocam->setAll(-1, 1, 1.0, -1.0, 0.1, 10.0);

+ 15 - 3
src/Scene/ParticleEmitter.cpp

@@ -68,8 +68,19 @@ void ParticleEmitter::init(const char* filename)
 
 	for(uint i = 0; i < maxNumOfParticles; i++)
 	{
+		ModelNode* md = new ModelNode(this);
+		md->init(modelName.c_str());
+		md->setLocalTransform(Transform(Vec3(Util::randFloat(i * 1.0)),
+			Mat3::getIdentity(), 1.0));
+
+		continue;
+
 		Particle* particle = new Particle(-1.0, this);
 		particle->init(modelName.c_str());
+		particle->setLocalTransform(Transform(Vec3(Util::randFloat(i * 1.0)),
+			Mat3::getIdentity(), 1.0));
+
+		continue;
 
 		particles.push_back(particle);
 
@@ -81,10 +92,11 @@ void ParticleEmitter::init(const char* filename)
 		init.mass = mass;
 		init.startTrf = toAnki(startingTrf);
 		init.shape = collShape.get();
-		init.sceneNode = particle;
+		init.sceneNode = NULL;
 		init.group = Phys::MasterContainer::CG_PARTICLE;
-		init.mask =
-			Phys::MasterContainer::CG_ALL ^ Phys::MasterContainer::CG_PARTICLE;
+		init.mask = Phys::MasterContainer::CG_ALL ^
+			Phys::MasterContainer::CG_PARTICLE;
+
 		Phys::RigidBody* body = new Phys::RigidBody(
 			SceneSingleton::getInstance().getPhysMasterContainer(), init);
 

+ 19 - 0
src/Scene/Scene.cpp

@@ -133,6 +133,25 @@ void Scene::updateAllWorldStuff(float prevUpdateTime, float crntTime)
 	{
 		SceneNode* pnode = queue[head++]; // queue pop
 
+		if(pnode->getSceneNodeName() == "PerspectiveCamera:Camera:0")
+		{
+			INFO("Delete me");
+		}
+
+
+/*		if(pnode->getSceneNodeType() == SceneNode::SNT_PARTICLE_EMITTER)
+		{
+			INFO("Delete me");
+		}
+
+		if(pnode->getSceneNodeType() == SceneNode::SNT_MODEL)
+		{
+			if(pnode->getParent())
+			{
+				INFO("Delete me " << static_cast<SceneNode*>(pnode->getParent())->getSceneNodeType());
+			}
+		}*/
+
 		pnode->updateWorldTransform();
 		pnode->frameUpdate(prevUpdateTime, crntTime);
 		pnode->moveUpdate();

+ 1 - 1
src/Scene/SceneNode.cpp

@@ -51,7 +51,7 @@ void SceneNode::updateWorldTransform()
 	{
 		const SceneNode* parent = static_cast<const SceneNode*>(getObjParent());
 
-		if(compoundFlag)
+		if(parent->compoundFlag)
 		{
 			worldTransform = parent->getWorldTransform();
 		}

+ 2 - 1
src/Scene/SceneNode.h

@@ -78,7 +78,8 @@ class SceneNode: public Object
 		void moveLocalZ(float distance);
 		/// @}
 
-		/// This update happens only when the object gets moved. Called only by the Scene
+		/// This update happens only when the object gets moved. Called only by
+		/// the Scene
 		void updateWorldTransform();
 
 		void addChild(SceneNode& node) {Object::addChild(&node);}