#include "HydraTextureDebugActor.h" #include "../engine/HydraEngine.h" #include "../actor/HydraActorManager.h" #include "../task/HydraTask.h" #include "../ecs/HydraECS.h" #include "../ecs/components/HydraPositionComponent.h" #include "../ecs/components/HydraMeshComponent.h" #include "../ecs/components/HydraRenderableComponent.h" #include "../ecs/components/HydraMaterialComponent.h" #include "../buffer/HydraMaterialBufferManager.h" #include "../buffer/HydraTextureBufferManager.h" #include "../buffer/HydraMaterialBuffer.h" #include "../mesh/HydraMeshManager.h" #include "../mesh/HydraMesh.h" void HydraTextureDebugActor::_CreateMesh() { HydraMeshManager *mesh_manager = GetEngine()->MeshManager(); HydraID mesh_id = mesh_manager->CreateMesh(); HydraMesh *mesh = mesh_manager->GetMesh(mesh_id); mesh->vertexes.resize(4); mesh->indexes.resize(6); float scale_x = 1.0f; float scale_y = 1.0f; float scale_z = 1.0f; float min_x = -0.5f * scale_x; float min_y = -0.5f * scale_y; float min_z = 0.5f * scale_z; float max_x = 0.5f * scale_x; float max_y = 0.5f * scale_y; float max_z = 0.5f * scale_z; float min_u = 1; float min_v = 1; float max_u = 0; float max_v = 0; // 1---2 5---6 // | / | | / | // 0---3 4---7 HydraID actor_id = GetID(); mesh->vertexes[0] = {min_x, min_y, min_z, min_u, min_v, actor_id, 0, 0, 0,0,0,0,0,0,0,0,0}; mesh->vertexes[1] = {min_x, max_y, min_z, min_u, max_v, actor_id, 0, 0, 0,0,0,0,0,0,0,0,0}; mesh->vertexes[2] = {max_x, max_y, min_z, max_u, max_v, actor_id, 0, 0, 0,0,0,0,0,0,0,0,0}; mesh->vertexes[3] = {max_x, min_y, min_z, max_u, min_v, actor_id, 0, 0, 0,0,0,0,0,0,0,0,0}; // Face 0 mesh->indexes[0] = 0; mesh->indexes[1] = 1; mesh->indexes[2] = 2; mesh->indexes[3] = 0; mesh->indexes[4] = 2; mesh->indexes[5] = 3; HydraECS *ecs = GetEngine()->ECS(); HydraMeshComponent mesh_comp; mesh_comp.mesh_id = mesh_id; mesh_comp.mesh_state = HYDRA_STATE::Waiting; ecs->AddComponent(GetID(), mesh_comp); } void HydraTextureDebugActor::_CreateRenderableComponent() { HydraRenderableComponent render_comp; HydraECS *ecs = GetEngine()->ECS(); render_comp.renderable_types.set((uint32_t)HYDRA_RENDERABLE_TYPE::HYDRA_TEXTURE_DEBUG, true); ecs->AddComponent(GetID(), render_comp); } void HydraTextureDebugActor::InitialiseComponents() { _CreateMesh(); _CreateRenderableComponent(); }