From c60e96883662d244d99b894f718cd9b6b6f6d9ab Mon Sep 17 00:00:00 2001 From: verysecrethero Date: Thu, 10 Dec 2015 11:03:40 +0100 Subject: [PATCH] Removed a boxclear in the end of the test2 method --- include/Engine/Core/OctTree.h | 1 + src/Engine/Core/OctTree.cpp | 4 ++-- src/Tests/OctTreeTestGameClass.cpp | 24 ++++++++++++++++++----- src/Tests/OctTreeTestHardCodedTestWorld.h | 2 +- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/include/Engine/Core/OctTree.h b/include/Engine/Core/OctTree.h index e5d5a83a..7379b202 100644 --- a/include/Engine/Core/OctTree.h +++ b/include/Engine/Core/OctTree.h @@ -58,6 +58,7 @@ private: glm::quat m_PrevOri; inline bool hasChildren() const; +public: int childIndexContainingPoint(const glm::vec3& point) const; std::vector childIndicesContainingBox(const AABB& box) const; }; diff --git a/src/Engine/Core/OctTree.cpp b/src/Engine/Core/OctTree.cpp index 82c1b554..582e3acd 100644 --- a/src/Engine/Core/OctTree.cpp +++ b/src/Engine/Core/OctTree.cpp @@ -109,8 +109,8 @@ void OctTree::Update(float dt, World* world, Camera* cam) ComponentWrapper transform = world->GetComponent(m_BoxID, "Transform"); transform["Position"] = boxPos; ComponentWrapper model = world->GetComponent(m_BoxID, "Model"); - //if (BoxCollides(box, AABB())) { - if (Collision::AABBVsAABB(box, aabb)) { + if (BoxCollides(box, AABB())) { + //if (Collision::AABBVsAABB(box, aabb)) { cam->SetPosition(m_PrevPos); cam->SetOrientation(m_PrevOri); model["Color"] = greenCol; diff --git a/src/Tests/OctTreeTestGameClass.cpp b/src/Tests/OctTreeTestGameClass.cpp index e79f645b..6b2e23bc 100644 --- a/src/Tests/OctTreeTestGameClass.cpp +++ b/src/Tests/OctTreeTestGameClass.cpp @@ -58,7 +58,13 @@ void Game::Tick() m_EventBroker->Swap(); #define TEST2 + //this draws the octTree and you can set the cube inside it and see what boxes in the tree that it belongs to #ifdef TEST1 + if (!m_UpdatedOnce) { + m_UpdatedOnce = true; + m_World->createTestEntitiesTest1(); + } + //add/move the trigger box auto pos = m_Renderer->Camera()->Forward() + m_Renderer->Camera()->Position(); AABB boxi; @@ -103,25 +109,32 @@ void Game::Tick() //wireframe glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); #endif + //this tests AABB vs AABB collision and AABB vs OctTree with AABB in it #ifdef TEST2 //only add 1 for now... //grey box - AABB aabb; - aabb.CreateFromCenter(glm::vec3(0.f, 2.f, 0.f), glm::vec3(1.f, 1.f, 1.f)); const glm::vec4 redCol = glm::vec4(1, 0.2f, 0, 1); const glm::vec4 greenCol = glm::vec4(0.1f, 1.0f, 0.25f, 1); const glm::vec3 boxSize = 0.1f*glm::vec3(1.0f, 1.0f, 1.0f); + AABB aabb; + aabb.CreateFromCenter(glm::vec3(0, 2.0f, 0.0f), glm::vec3(1.0f, 1.0f, 1.0f)); + if (m_UpdatedOnce) { + auto test = someOctTree.childIndicesContainingBox(aabb); + std::vector test2; + someOctTree.BoxesInSameRegion(aabb, test2); + } if (!m_UpdatedOnce) { + m_UpdatedOnce = true; someOctTree.AddStaticObject(aabb); + //create the "small red box" m_BoxID = m_World->CreateEntity(); ComponentWrapper transform = m_World->AttachComponent(m_BoxID, "Transform"); transform["Scale"] = boxSize; ComponentWrapper model = m_World->AttachComponent(m_BoxID, "Model"); model["Resource"] = "Models/Core/UnitBox.obj"; - m_UpdatedOnce = true; m_World->createTestEntitiesTest2(); } @@ -132,8 +145,10 @@ void Game::Tick() ComponentWrapper transform = m_World->GetComponent(m_BoxID, "Transform"); transform["Position"] = boxPos; ComponentWrapper model = m_World->GetComponent(m_BoxID, "Model"); + //this checks AABB vs an AABB in the octTree if (someOctTree.BoxCollides(redBox, AABB())) { - //if (Collision::AABBVsAABB(redBox, aabb)) { + //this checks AABB vs AABB + //if (Collision::AABBVsAABB(redBox, aabb)) { m_Renderer->Camera()->SetPosition(m_PrevPos); m_Renderer->Camera()->SetOrientation(m_PrevOri); model["Color"] = greenCol; @@ -144,7 +159,6 @@ void Game::Tick() m_PrevPos = m_Renderer->Camera()->Position(); m_PrevOri = m_Renderer->Camera()->Orientation(); - someOctTree.ClearObjects(); m_RenderQueueFactory->Update(m_World); #endif diff --git a/src/Tests/OctTreeTestHardCodedTestWorld.h b/src/Tests/OctTreeTestHardCodedTestWorld.h index ff7b56cc..a0762cce 100644 --- a/src/Tests/OctTreeTestHardCodedTestWorld.h +++ b/src/Tests/OctTreeTestHardCodedTestWorld.h @@ -66,7 +66,7 @@ private: RegisterComponent(f); } - void createTestEntities() + void createTestEntitiesTest1() { World& world = *this; EntityID tempId;