コード例 #1
0
void SceneManagerCMPlay::AddHEALER(string ID)
{
	//**********//
	//Healer	//
	//**********//
	GameObject3D* newModel = new GameObject3D;
	SceneNode* newNode = new SceneNode;
	Mesh* drawMesh = resourceManager.retrieveMesh("HEALER_OBJ");
	drawMesh->textureID = resourceManager.retrieveTexture("HEALER");
	newModel = new GameObject3D;
	newNode = new SceneNode;
	newModel->setMesh(drawMesh);
	newModel->setName(ID);
	newNode->SetGameObject(newModel);
	sceneGraph->AddChildNode(newNode);

	drawMesh = resourceManager.retrieveMesh("HEALER_ROD_OBJ");
	drawMesh->textureID = resourceManager.retrieveTexture("WEAPONS");
	newModel = new GameObject3D;
	newNode = new SceneNode;

	string IDPlus = ID;
	IDPlus += ROD;
	IDPlus += ID.back();

	newModel->setName(IDPlus);
	newModel->setMesh(drawMesh);
	newNode->SetGameObject(newModel);
	sceneGraph->AddChildToChildNode(ID, newNode);

	HEALER_COUNT++;
	TOTAL_COUNT++;
}
コード例 #2
0
void SceneManagerCMPlay::AddMAGE(string ID)
{
	//**********//
	//Mage		//
	//**********//
	GameObject3D* newModel = new GameObject3D;
	SceneNode* newNode = new SceneNode;
	Mesh* drawMesh = resourceManager.retrieveMesh("MAGE_OBJ");
	drawMesh->textureID = resourceManager.retrieveTexture("MAGE");
	newModel = new GameObject3D;
	newNode = new SceneNode;
	newModel->setMesh(drawMesh);
	newModel->setName(ID);
	newNode->SetGameObject(newModel);
	sceneGraph->AddChildNode(newNode);

	drawMesh = resourceManager.retrieveMesh("MAGE_STAFF_OBJ");
	drawMesh->textureID = resourceManager.retrieveTexture("WEAPONS");
	newModel = new GameObject3D;
	newNode = new SceneNode;

	string IDPlus = ID;
	IDPlus += STAFF;
	IDPlus += ID.back();

	newModel->setName(IDPlus);
	newModel->setMesh(drawMesh);
	newNode->SetGameObject(newModel);
	sceneGraph->AddChildToChildNode(ID, newNode);

	MAGE_COUNT++;
	TOTAL_COUNT++;
}
コード例 #3
0
ファイル: SceneManagerCMPlay.cpp プロジェクト: Chongjx/Alpha
SceneNode* SceneManagerCMPlay::getNode()
{
	GameObject3D* object;
	SceneNode* node;

	for (unsigned i = 0; i < nodeList.size(); ++i)
	{
		if (!nodeList[i]->getActive())
		{
			//nodeList[i]->CleanUp();
			nodeList[i]->setActive(true);
			//object = new GameObject3D;
			//nodeList[i]->SetGameObject(object);
			return nodeList[i];
		}
	}

	for (int i = 0; i < 50; ++i)
	{
		object = new GameObject3D;
		node = new SceneNode;

		node->SetGameObject(object);
		node->setActive(false);

		nodeList.push_back(node);
	}

	SceneNode *lastnode = nodeList.back();
	lastnode->setActive(true);
	return lastnode;
}
コード例 #4
0
void SceneManagerCMPlay::AddBOSS(string ID)
{
	//**********//
	//Boss		//
	//**********//
	GameObject3D* newModel = new GameObject3D;
	SceneNode* newNode = new SceneNode;
	Mesh* drawMesh = resourceManager.retrieveMesh("BOSS_OBJ");
	drawMesh->textureID = resourceManager.retrieveTexture("BOSS");
	newModel = new GameObject3D;
	newNode = new SceneNode;
	newModel->setMesh(drawMesh);
	newModel->setName(ID);
	newNode->SetGameObject(newModel);
	sceneGraph->AddChildNode(newNode);

	drawMesh = resourceManager.retrieveMesh("BOSS_ARM_OBJ");
	drawMesh->textureID = resourceManager.retrieveTexture("BOSS");
	newModel = new GameObject3D;
	newNode = new SceneNode;

	string IDPlus = ID;
	IDPlus += RARM;
	IDPlus += ID.back();

	newModel->setName(IDPlus);
	newModel->setMesh(drawMesh);
	newNode->SetGameObject(newModel);
	sceneGraph->AddChildToChildNode(ID, newNode);

	drawMesh = resourceManager.retrieveMesh("BOSS_ARM_OBJ");
	drawMesh->textureID = resourceManager.retrieveTexture("BOSS");
	newModel = new GameObject3D;
	newNode = new SceneNode;

	IDPlus = ID;
	IDPlus += LARM;
	IDPlus += ID.back();

	newModel->setName(IDPlus);
	newModel->setMesh(drawMesh);
	newNode->SetGameObject(newModel);
	sceneGraph->AddChildToChildNode(ID, newNode);

	BOSS_COUNT++;
	TOTAL_COUNT++;
}
コード例 #5
0
void SceneManagerCMPlay::AddTANK(string ID)
{
	//**********//
	//Warrior	//
	//**********//
	GameObject3D* newModel = new GameObject3D;
	SceneNode* newNode = new SceneNode;
	Mesh* drawMesh = resourceManager.retrieveMesh("WARRIOR_OBJ");
	drawMesh->textureID = resourceManager.retrieveTexture("WARRIOR");
	newModel->setMesh(drawMesh);
	newModel->setName(ID);
	newNode->SetGameObject(newModel);
	sceneGraph->AddChildNode(newNode);

	drawMesh = resourceManager.retrieveMesh("WARRIOR_SWORD_OBJ");
	drawMesh->textureID = resourceManager.retrieveTexture("WEAPONS");
	newModel = new GameObject3D;
	newNode = new SceneNode;

	

	string IDPlus = ID;
	IDPlus += SWORD;
	IDPlus += ID.back();

	newModel->setName(IDPlus);
	newModel->setMesh(drawMesh);
	newNode->SetGameObject(newModel);
	sceneGraph->AddChildToChildNode(ID, newNode);

	//drawMesh = resourceManager.retrieveMesh("WARRIOR_SHIELD_OBJ");
	//drawMesh->textureID = resourceManager.retrieveTexture("WEAPONS");
	newModel = new GameObject3D;
	newNode = new SceneNode;

	IDPlus = ID;
	IDPlus += SHIELD_PIVOT;
	IDPlus += ID.back();

	newModel->setName(IDPlus);
	//newModel->setMesh(drawMesh);
	newNode->SetGameObject(newModel);
	sceneGraph->AddChildToChildNode(ID, newNode);

	drawMesh = resourceManager.retrieveMesh("WARRIOR_SHIELD_OBJ");
	drawMesh->textureID = resourceManager.retrieveTexture("WEAPONS");
	newModel = new GameObject3D;
	newNode = new SceneNode;

	string theCopy = IDPlus;

	IDPlus = ID;
	IDPlus += SHIELD;
	IDPlus += ID.back();

	newModel->setName(IDPlus);
	newModel->setMesh(drawMesh);
	newNode->SetGameObject(newModel);
	sceneGraph->AddChildToChildNode(theCopy, newNode);

	TANK_COUNT++;
	TOTAL_COUNT++;
}
コード例 #6
0
ファイル: SceneManagerCMPlay.cpp プロジェクト: Chongjx/Alpha
void SceneManagerCMPlay::Config(string directory)
{
	sceneBranch = TextTree::FileToRead(directory);

	for (vector<Branch>::iterator branch = sceneBranch.childBranches.begin(); branch != sceneBranch.childBranches.end(); ++branch)
	{
		if (branch->branchName == "SpatialPartition")
		{
			// create a spatial partition manager if it is not defined
			if (spatialPartitionManager == NULL)
			{
				spatialPartitionManager = new SpatialPartitionManager();
			}

			int type = 0;
			Vector3 partitionDimension;
			Vector2 partitionDimension2D;
			bool numPartitionBased = true;

			std::cout << "Setting up spatial partitioning" << std::endl;
			for (vector<Attribute>::iterator attri = branch->attributes.begin(); attri != branch->attributes.end(); ++attri)
			{
				Attribute tempAttri = *attri;
				string attriName = tempAttri.name;
				string attriValue = tempAttri.value;

				if (attriName == "Type")
				{
					type = stoi(attriValue);
				}

				else if (attriName == "WorldStart")
				{
					if (type == 3)
					{
						stringToVector(attriValue, world3DStart);
					}

					else
					{
						stringToVector(attriValue, world2DStart);
					}
				}

				else if (attriName == "WorldEnd")
				{
					if (type == 3)
					{
						stringToVector(attriValue, world3DEnd);
					}

					else
					{
						stringToVector(attriValue, world2DEnd);
					}
				}

				else if (attriName == "Partitions")
				{
					if (type == 3)
					{
						stringToVector(attriValue, partitionDimension);
					}

					else
					{
						stringToVector(attriValue, partitionDimension2D);
					}
				}

				else if (attriName == "PartitionBased")
				{
					stringToBool(attriValue, numPartitionBased);
				}
			}

			// 3D spatial partition
			if (type == 3)
			{
				spatialPartitionManager->Init(world3DStart, world3DEnd, partitionDimension, numPartitionBased, resourceManager.retrieveMesh("DEBUG_CUBE"));
			}

			// assume its 2D
			else
			{
				spatialPartitionManager->Init(world2DStart, world2DEnd, partitionDimension2D, numPartitionBased, resourceManager.retrieveMesh("DEBUG_QUAD"));
			}
		}

		else if (branch->branchName == "SceneNode")
		{
			std::cout << "Creating scenenode container!" << std::endl;

			for (vector<Attribute>::iterator attri = branch->attributes.begin(); attri != branch->attributes.end(); ++attri)
			{
				Attribute tempAttri = *attri;
				string attriName = tempAttri.name;
				string attriValue = tempAttri.value;

				if (attriName == "Container")
				{
					GameObject3D* object;
					SceneNode* node;
					int containerSize = stoi(tempAttri.value);
					for (int i = 0; i < containerSize; ++i)
					{
						object = new GameObject3D;
						node = new SceneNode;

						node->SetGameObject(object);

						nodeList.push_back(node);
					}
				}
			}
		}
	}
}
コード例 #7
0
ファイル: SceneManagerCMPlay.cpp プロジェクト: Chongjx/Alpha
void SceneManagerCMPlay::Update(double dt)
{
	SceneManagerGameplay::Update(dt);
	//FSMApplication();

	//spatialPartitionManager->Update();

	spatialPartitionManager->removeNode(dynamicSceneGraph);
	spatialPartitionManager->addNode(dynamicSceneGraph, this->spatialPartitionManager->type);

	// loop through partitions
	for (unsigned i = 0; i < spatialPartitionManager->partitions.size(); ++i)
	{
		// check if partitions contain more than 1 node ( can further optimize by checking if contains dynamic nodes)
		if (spatialPartitionManager->partitions[i]->nodes.size() > 0)
		{
			for (vector<SceneNode*>::iterator j = spatialPartitionManager->partitions[i]->nodes.begin(); j != spatialPartitionManager->partitions[i]->nodes.end(); ++j)
			{
				SceneNode* firstNode = *j;
				
				for (vector<SceneNode*>::iterator k = j + 1; k != spatialPartitionManager->partitions[i]->nodes.end(); ++k)
				{
					SceneNode* secondNode = *k;
					string boxName = "";
					
					if (firstNode->getActive() && secondNode->getActive())
					{
						//Only check if both are not player
						if (firstNode->GetGameObject()->getName() != "Player" && secondNode->GetGameObject()->getName() != "Player" && firstNode->GetGameObject()->getName() != "LeftHand" && secondNode->GetGameObject()->getName() != "LeftHand" && firstNode->GetGameObject()->getName() != "RightHand" && secondNode->GetGameObject()->getName() != "RightHand")
						{

							if (check3DCollision(firstNode->GetGameObject()->getHitbox(), secondNode->GetGameObject()->getHitbox(), boxName))
							{
								if (firstNode->GetGameObject()->getName() == "testprojectile")
								{
									//projectileManager.RemoveProjectile(firstNode->GetGameObject());
									spatialPartitionManager->removeNode(secondNode);
									dynamicSceneGraph->RemoveChildNode(secondNode);
									j = spatialPartitionManager->partitions[i]->nodes.begin();
									break;
								}
								else if (secondNode->GetGameObject()->getName() == "testprojectile")
								{
									//projectileManager.RemoveProjectile(firstNode->GetGameObject());
									spatialPartitionManager->removeNode(firstNode);
									dynamicSceneGraph->RemoveChildNode(firstNode);
									j = spatialPartitionManager->partitions[i]->nodes.begin();
									break;
								}
								//Every other thing
								spatialPartitionManager->removeNode(secondNode);
								dynamicSceneGraph->RemoveChildNode(secondNode);
								j = spatialPartitionManager->partitions[i]->nodes.begin();
								break;
							}
						}
					}
				}
			}
		}
	}

	/*Sound testing related keys*/
	if (inputManager->getKey("TEST_SOUND"))
	{
		resourceManager.setListenerPosition(tpCamera.getPosition(), tpCamera.getTarget());
		static int distance = 2;
		//distance++;
		//resourceManager.retrieveSoundas2D("MenuFeedback");
		resourceManager.retrieveSoundas3D("MenuFeedback", tpCamera.getPosition() + (float)distance);
	}

	if (inputManager->getKey("VOLUME_UP"))
	{
		resourceManager.IncreaseSoundEngineVolume();
	}
	if (inputManager->getKey("VOLUME_DOWN"))
	{
		resourceManager.DecreaseSoundEngineVolume();
	}

	//tpCamera.Update(dt);

	if (inputManager->getKey("RSelect"))
	{
		Vector3 characterPos = dynamicSceneGraph->GetChildNode("Player")->GetGameObject()->getPosition();
		testProjectile.setPosition(characterPos);
		CProjectile* projectile = projectileManager.FetchProjectile(testProjectile, (tpCamera.getTarget() - tpCamera.getPosition()).Normalized(), 20.f);
		GameObject3D* newProjectile = projectile;
		SceneNode* node;
		node = getNode();
		node->SetGameObject(newProjectile);
		dynamicSceneGraph->AddChildNode(node);
	}

	projectileManager.Update(dt);

	if (inputManager->getKey("LockPitch"))
	{
		tpCamera.TogglePitchLock();
	}
	if (inputManager->getKey("LockYaw"))
	{
		tpCamera.ToggleYawLock();
	}

	const float moveSpeed = 100.f;
	if (inputManager->getKey("Up"))
	{
		Player->SetAngle(tpCamera.GetCamAngle());

		if (inputManager->getKey("Left"))
		{
			Player->SetAngle(tpCamera.GetCamAngle() - 45.f);
		}

		if (inputManager->getKey("Right"))
		{
			Player->SetAngle(tpCamera.GetCamAngle() + 45.f);
		}
		Player->UpdateMovement(dt);
	}

	if (inputManager->getKey("Down"))
	{
		Player->SetAngle(tpCamera.GetCamAngle() + 180.f);

		if (inputManager->getKey("Left"))
		{
			Player->SetAngle(tpCamera.GetCamAngle() - 135.f);
		}

		if (inputManager->getKey("Right"))
		{
			Player->SetAngle(tpCamera.GetCamAngle() + 135.f);
		}
		Player->UpdateMovement(dt);

	}

	if (inputManager->getKey("Left"))
	{
		Player->SetAngle(tpCamera.GetCamAngle() + 90.f);

		Player->UpdateMovement(dt);
	}

	if (inputManager->getKey("Right"))
	{
		Player->SetAngle(tpCamera.GetCamAngle() - 90.f);

		Player->UpdateMovement(dt);
	}

	dynamicSceneGraph->GetChildNode("Player")->GetGameObject()->setPosition(Vector3(
		dynamicSceneGraph->GetChildNode("Player")->GetGameObject()->getPosition().x,
		dynamicSceneGraph->GetChildNode("Player")->GetGameObject()->getPosition().y,
		dynamicSceneGraph->GetChildNode("Player")->GetGameObject()->getPosition().z));

	dynamicSceneGraph->GetChildNode("Player")->GetGameObject()->setRotation(Player->GetAngle(),
		0,
		1,
		0);


	tpCamera.UpdatePosition(dynamicSceneGraph->GetChildNode("Player")->GetGameObject()->getPosition(), Vector3(0, 0, 0));
}