Mesh_Entities!

This commit is contained in:
2025-03-26 23:40:35 +01:00
parent 74268015a0
commit b6b1371af5
12 changed files with 145 additions and 31 deletions

View File

@@ -31,7 +31,6 @@ Node_Render_Data :: struct {
enabled : bool = true;
transform: Transform;
material : Entity_Material;
has_sampled_animation: bool;
// Buffers
transform_buffer: Buffer_Handle;
@@ -45,9 +44,11 @@ Renderable :: struct {
visible: bool = true;
type : Renderable_Type; @DontSerialize
model: *Model; @DontSerialize
model: Model_Handle; @DontSerialize
nodes: [MAX_NODES] Node_Render_Data; @DontSerialize
num_nodes: s64; @DontSerialize
//node_buffer : Buffer_Handle; // Structure buffer with all transform + material // TODO
}
MAX_CHILDREN :: 16;
@@ -114,8 +115,10 @@ set_parent :: (e: *Entity, parent: *Entity, node_name: string = "") {
set_base_color :: (e: *Entity, color: Vector4, node_name: string = "") {
if e.renderable.type == .MODEL {
model := get_model_by_handle(e.renderable.model);
for i: 0..e.renderable.num_nodes-1 {
actual_node := e.renderable.model.nodes[i];
actual_node := model.nodes[i];
if node_name.count == 0 || node_name == actual_node.name {
data := *e.renderable.nodes[i];
if data.material_buffer > 0 {
@@ -140,13 +143,15 @@ set_node_enabled :: (e: *Entity, node_name: string, enabled : bool) {
}
}
load_model_into_entity :: (e: *Entity, model: *Model) {
load_model_into_entity :: (e: *Entity, handle: Model_Handle) {
model := get_model_by_handle(handle);
e.renderable.type = .MODEL;
assert(model.nodes.count <= MAX_NODES);
e.renderable.num_nodes = model.nodes.count;
e.renderable.model = model;
e.renderable.model = handle;
for *model.nodes {
data : Node_Render_Data;