PRetty good collision detection but there is still some small bug I don't know about
This commit is contained in:
@ -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;
|
||||
}
|
@ -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;
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user