PRetty good collision detection but there is still some small bug I don't know about

This commit is contained in:
2023-02-24 23:37:27 -08:00
parent d5fdc29cb4
commit b32c7e8af6
15 changed files with 124 additions and 43 deletions

View File

@ -5,13 +5,32 @@
#include "ScenePhysicsManager.hpp"
#include "scene/Scene.hpp"
#include "scene/components/physics/3d/Collider3D.hpp"
using namespace Dawn;
ScenePhysicsManager::ScenePhysicsManager() {
ScenePhysicsManager::ScenePhysicsManager(Scene *scene) {
this->scene = scene;
}
void ScenePhysicsManager::update() {
}
std::vector<struct Collider3DRayResult> ScenePhysicsManager::raycast3DAll(
struct Ray3D ray
) {
// TODO: Optimize the crap out of this.
struct Collider3DRayResult result;
auto colliders = scene->findComponents<Collider3D>();
std::vector<struct Collider3DRayResult> results;
auto itCollider = colliders.begin();
while(itCollider != colliders.end()) {
if((*itCollider)->raycast(&result, ray)) {
results.push_back(result);
}
++itCollider;
}
return results;
}

View File

@ -5,7 +5,7 @@
#pragma once
#include "dawnlibs.hpp"
#include "scene/SceneItem.hpp"
#include "physics/3d/Ray3D.hpp"
typedef int64_t scenechunk_t;
@ -13,17 +13,22 @@ typedef int64_t scenechunk_t;
namespace Dawn {
class Scene;
class Collider3D;
struct Collider3DRayResult;
class ScenePhysicsManager {
protected:
std::map<scenechunk_t, std::vector<SceneItem*>> chunkItems;
std::map<SceneItem*, std::vector<scenechunk_t>> itemChunks;
Scene *scene;
// std::map<scenechunk_t, std::vector<SceneItem*>> chunkItems;
// std::map<SceneItem*, std::vector<scenechunk_t>> itemChunks;
public:
ScenePhysicsManager();
ScenePhysicsManager(Scene *scene);
void update();
std::vector<struct Collider3DRayResult> raycast3DAll(struct Ray3D ray);
friend class Scene;
};
}