void SceneManagerCMPlay::RenderStaticObject() { Mesh* drawMesh = resourceManager.retrieveMesh("SKYPLANE"); drawMesh->textureID = resourceManager.retrieveTexture("SKYPLANE_TOP"); modelStack.PushMatrix(); modelStack.Translate(0, 2000, 0); Render3DMesh(drawMesh, false); modelStack.PopMatrix(); drawMesh = resourceManager.retrieveMesh("FLOOR"); drawMesh->textureID = resourceManager.retrieveTexture("FLOOR"); for (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++j) { modelStack.PushMatrix(); modelStack.Rotate(-90, 1, 0, 0); modelStack.Translate(-500 + i * 100, -500 +j * 100, -5); modelStack.Scale(100.0f, 100.0f, 100.0f); Render3DMesh(drawMesh, false); modelStack.PopMatrix(); } } }
void SceneManagerCMPlay::RenderStaticObject() { static Mesh* debugMesh = resourceManager.retrieveMesh("DEBUG_CUBE"); staticSceneGraph->Draw(this,debugMesh); Mesh* drawMesh; drawMesh = resourceManager.retrieveMesh("WARRIOR_SWORD_OBJ"); drawMesh = resourceManager.retrieveMesh("SKYPLANE"); modelStack.PushMatrix(); modelStack.Translate(0, 2000, 0); Render3DMesh(drawMesh, false); modelStack.PopMatrix(); drawMesh = resourceManager.retrieveMesh("FLOOR"); modelStack.PushMatrix(); modelStack.Rotate(-90, 1, 0, 0); modelStack.Translate(0, 0, -10); modelStack.Rotate(-90, 0, 0, 1); Render3DMesh(drawMesh, false); modelStack.PopMatrix(); drawMesh = resourceManager.retrieveMesh("TREE_OBJ"); Render3DMesh(drawMesh, false); if (debugInfo) { for (int k = 0; k < (int)spatialPartitionManager->getNumPartition().z; ++k) { for (int j = 0; j < (int)spatialPartitionManager->getNumPartition().y; ++j) { for (int i = 0; i < (int)spatialPartitionManager->getNumPartition().x; ++i) { Partition* partition = spatialPartitionManager->getPartition(Vector3((float)i, (float)j, (float)k), false); if (partition->nodes.size() > 0) { std::cout << partition->nodes.size() << std::endl; modelStack.PushMatrix(); modelStack.Translate( world3DStart.x + (i + 0.5f) * spatialPartitionManager->getParitionDimension().x, world3DStart.y + (j + 0.5f) * spatialPartitionManager->getParitionDimension().y, world3DStart.z + (k + 0.5f) * spatialPartitionManager->getParitionDimension().z); modelStack.Scale(spatialPartitionManager->getParitionDimension()); Render3DMesh(partition->getMesh(), false); modelStack.PopMatrix(); } } } } } }
void SceneManagerCMPlay::RenderMobileObject() { //Mesh* drawMesh = resourceManager.retrieveMesh("CIRCLE_RED"); //template circle for (int i = 0; i < ListOfCharacters.size(); ++i) { if (ListOfCharacters[i]->GetTYPE() == "BOSS") { CBoss* temp = (CBoss*)ListOfCharacters[i]; if (temp->GetCastingSkillBool()) { modelStack.PushMatrix(); modelStack.Translate(temp->GetPosition().x, temp->GetPosition().y, temp->GetPosition().z); modelStack.Rotate(-90, 1, 0, 0); modelStack.Scale(temp->GetSkillRadius(), temp->GetSkillRadius(), temp->GetSkillRadius()); Render3DMesh(resourceManager.retrieveMesh("CIRCLE_RED"), true); modelStack.PopMatrix(); } } } if (toggleStatusAndParticles) { for (int i = 0; i < ListOfParticles.size(); ++i) { if (ListOfParticles[i]->m_Active) { CParticle* Particle = ListOfParticles[i]; modelStack.PushMatrix(); modelStack.Translate(Particle->position.x, Particle->position.y, Particle->position.z); modelStack.Scale(Particle->scale, Particle->scale, Particle->scale); Render3DMesh(Particle->mesh, false); modelStack.PopMatrix(); } } } /*modelStack.PushMatrix(); modelStack.Translate(40, 1, 0); modelStack.Scale(10, 10, 10); Render3DMesh(resourceManager.retrieveMesh("FIREBALL"), false); modelStack.PopMatrix();*/ FSMApplication(); RenderPlayerStats(); sceneGraph->Draw(this); }
void SceneManagerCMPlay::RenderPlayerStats() { float m_BillBoard; Mesh* drawMesh = resourceManager.retrieveMesh("FONT"); drawMesh->textureID = resourceManager.retrieveTexture("STATUSFONT"); string count = "Total Entities:" + to_string(TOTAL_COUNT); string FPS = "FPS: " + to_string(fps); RenderTextOnScreen(drawMesh, FPS, resourceManager.retrieveColor("White"), 25.f, 1500, 1050, 0); RenderTextOnScreen(drawMesh, count, resourceManager.retrieveColor("White"), 25.f, 1500, 1020, 0); RenderTextOnScreen(drawMesh, "F1 - To spawn tank", resourceManager.retrieveColor("White"), 25.f, 10, 1050, 0); RenderTextOnScreen(drawMesh, "F2 - To spawn mage", resourceManager.retrieveColor("White"), 25.f, 10, 1020, 0); RenderTextOnScreen(drawMesh, "F3 - To spawn healer", resourceManager.retrieveColor("White"), 25.f, 10, 990, 0); RenderTextOnScreen(drawMesh, "F4 - To spawn boss", resourceManager.retrieveColor("White"), 25.f, 10, 960, 0); RenderTextOnScreen(drawMesh, "F5 - Warrior hp = 10%", resourceManager.retrieveColor("White"), 25.f, 10, 930, 0); RenderTextOnScreen(drawMesh, "F6 - Kill warrior", resourceManager.retrieveColor("White"), 25.f, 10, 900, 0); RenderTextOnScreen(drawMesh, "F7 - Healer hp = 10%", resourceManager.retrieveColor("White"), 25.f, 10, 870, 0); RenderTextOnScreen(drawMesh, "F8 - Restore health", resourceManager.retrieveColor("White"), 25.f, 10, 840, 0); RenderTextOnScreen(drawMesh, "W & S - Cycle Camera", resourceManager.retrieveColor("White"), 25.f, 10, 810, 0); RenderTextOnScreen(drawMesh, "3 & 4 - Toggle status render", resourceManager.retrieveColor("White"), 25.f, 10, 780, 0); if (toggleStatusAndParticles) { for (int i = 0; i < ListOfCharacters.size(); ++i) { Vector2 CopyVector; Vector2 CopyVector2; CopyVector.Set(tpCamera.getPosition().x, tpCamera.getPosition().z); CopyVector2.Set(ListOfCharacters[i]->GetPosition().x, ListOfCharacters[i]->GetPosition().z); Vector2 Direction = (CopyVector - CopyVector2).Normalized(); if (!Direction.IsZero()) { m_BillBoard = Math::RadianToDegree(atan2(Direction.x, Direction.y)); } modelStack.PushMatrix(); modelStack.Translate(ListOfCharacters[i]->GetPosition().x, ListOfCharacters[i]->GetPosition().y + 15.f, ListOfCharacters[i]->GetPosition().z); modelStack.Rotate(m_BillBoard, 0, 1, 0); modelStack.Scale(2.f, 2.f, 2.f); modelStack.PushMatrix(); modelStack.Translate(-2.5f, 0.f, 0.f); RenderText(drawMesh, ListOfCharacters[i]->PrintState(), resourceManager.retrieveColor("White")); modelStack.PopMatrix(); float HPBARSCALE = 5.f; modelStack.PushMatrix(); float newScale = (ListOfCharacters[i]->GetHpPercent() / 100) * HPBARSCALE; float theTranslate = 5.0f - (ListOfCharacters[i]->GetHpPercent() / 100) * HPBARSCALE; modelStack.Translate(-theTranslate * 0.5f, 2.f, 0.01f); modelStack.Scale(newScale, 1, 1); Render3DMesh(resourceManager.retrieveMesh("HPCURRENT"), true); modelStack.PopMatrix(); modelStack.PushMatrix(); modelStack.Translate(0.f, 2.f, 0.f); modelStack.Scale(HPBARSCALE, 1, 1); Render3DMesh(resourceManager.retrieveMesh("HPMAX"), true); modelStack.PopMatrix(); modelStack.PopMatrix(); } } }