Point lights

This commit is contained in:
Confideo-IOM
2026-08-28 16:36:25 +01:00
parent 30538ae7ab
commit e3d37e3f8a
60 changed files with 458 additions and 184 deletions
@@ -0,0 +1,27 @@
#ifndef HYDRADELETECOMPONENTSTASK
#define HYDRADELETECOMPONENTSTASK
#include "../HydraTask.h"
#include "../../engine/HydraEngine.h"
#include "../../ecs/HydraECS.h"
#include <memory>
class HydraDeleteComponentsTask : public HydraTask
{
private:
protected:
public:
virtual void Process() override
{
// GetEngine()->ECS()->DeleteComponents();
}
};
#endif /* HYDRADELETECOMPONENTSTASK */
@@ -14,6 +14,7 @@ class HydraInitialiseComponentsTask : public HydraTask
public:
virtual void Process() override
{
GetEngine()->ECS()->InitialiseComponents();
}
@@ -57,9 +57,10 @@ public:
b3Pos pos = {};
shapeDef.density = 1.0f;
shapeDef.baseMaterial.restitution = 0.4f;
shapeDef.baseMaterial.restitution = 0.6f;
b3CreateHullShape(*m_body_id, &shapeDef, &box.base );
DebugLog("B3LOG " + std::to_string(m_entity_id) + " BODY " + std::to_string(m_body_id->index1) + "\n");
}
void Initialise(b3WorldId world_id, HydraPhysicsComponent physics_comp, b3BodyId* body_id, HydraID entity_id)
@@ -20,6 +20,7 @@ public:
void Process() override
{
b3DestroyBody(m_body_id);
DebugLog("B3 DELETE " + std::to_string(m_body_id.index1) + "\n");
}
void Initialise(b3BodyId body_id)
@@ -20,9 +20,9 @@ public:
void Process() override
{
b3WorldDef world_def = b3DefaultWorldDef();
world_def.workerCount = 1;
world_def.workerCount = 4;
world_def.enableSleep = true;
world_def.enableContinuous = true;
*m_world_id = b3CreateWorld( &world_def );
@@ -24,22 +24,23 @@ public:
b3BodyEvents events = b3World_GetBodyEvents(m_world_id);
HydraTaskScheduler* task_scheduler = GetEngine()->TaskScheduler();
HydraID barrier_id = task_scheduler->CreateBarrier();
// HydraID barrier_id = task_scheduler->CreateBarrier();
for(uint32_t i = 0; i < events.moveCount; i ++)
{
HydraID task_id = task_scheduler->CreateTask<HydraSetWorldTransformTask>(HydraThreadAffinity::General, barrier_id);
HydraID task_id = task_scheduler->CreateTask<HydraSetWorldTransformTask>(HydraThreadAffinity::General);//, barrier_id);
HydraSetWorldTransformTask *set_task = static_cast<HydraSetWorldTransformTask *>(task_scheduler->GetTask(task_id));
glm::dvec3 position = {events.moveEvents[i].transform.p.x, events.moveEvents[i].transform.p.y, events.moveEvents[i].transform.p.z};
glm::quat temp = glm::quat(events.moveEvents[i].transform.q.s, glm::vec3(events.moveEvents[i].transform.q.v.x, events.moveEvents[i].transform.q.v.y, events.moveEvents[i].transform.q.v.z));
glm::vec3 rotation = glm::eulerAngles(temp);
HydraID* entity_id = reinterpret_cast<HydraID*>(events.moveEvents[i].userData);
set_task->Initialise(*entity_id, position, rotation);
task_scheduler->StartTask(task_id);
//task_scheduler->StartTask(task_id);
task_scheduler->WaitForTask(task_id);
}
task_scheduler->WaitForBarrier(barrier_id);
//task_scheduler->WaitForBarrier(barrier_id);
}
void Initialise(b3WorldId world_id, float delta_t_seconds)
{