Tiny refactor

This commit is contained in:
2024-10-18 16:12:24 +02:00
parent 8ee000ab74
commit 1d5b4499a4
38 changed files with 645 additions and 637 deletions

View File

@@ -36,10 +36,10 @@ Particle_System :: struct {
}
create_particle_system :: (pipeline: Pipeline_State_Handle, update_func: (*Particle_System, float), owning_entity: *Entity = null, scene: *Scene = null) -> *Particle_System {
lvl := ifx scene == null then current_scene else scene;
lvl := ifx scene == null then engine.current_scene else scene;
particle_system, locator := find_and_occupy_empty_slot(*scene.particle_systems);
particle_system._locator = locator;
particle_system.vertex_buffer = create_vertex_buffer(renderer, null, size_of(Particle_Vertex) * MAX_PARTICLES, stride=size_of(Particle_Vertex), mappable=true);
particle_system.vertex_buffer = create_vertex_buffer(engine.renderer, null, size_of(Particle_Vertex) * MAX_PARTICLES, stride=size_of(Particle_Vertex), mappable=true);
particle_system.pipeline = pipeline;
particle_system.on_particle_update = update_func;
particle_system.owning_entity = owning_entity;
@@ -60,7 +60,7 @@ spawn_particle :: (system: *Particle_System, position: Vector3, velocity: Vector
}
update_particle_systems :: (dt: float) {
for *system: current_scene.particle_systems {
for *system: engine.current_scene.particle_systems {
if system.on_particle_update != null {
system.on_particle_update(system, dt);
}
@@ -71,9 +71,9 @@ update_particle_system :: (system: *Particle_System, dt: float) {
}
prepare_particle_system_for_rendering :: (system: Particle_System) {
up := current_scene.camera.up;
right := current_scene.camera.right;
forward := current_scene.camera.forward;
up := engine.current_scene.camera.up;
right := engine.current_scene.camera.right;
forward := engine.current_scene.camera.forward;
rendering_data : [..] Particle_Vertex;
rendering_data.allocator = temp;
@@ -135,25 +135,25 @@ prepare_particle_system_for_rendering :: (system: Particle_System) {
}
if rendering_data.count > 0 {
upload_data_to_buffer(renderer, system.vertex_buffer, rendering_data.data, size_of(Particle_Vertex) * rendering_data.count);
upload_data_to_buffer(engine.renderer, system.vertex_buffer, rendering_data.data, size_of(Particle_Vertex) * rendering_data.count);
}
}
render_particle_systems :: () {
for system: current_scene.particle_systems {
for system: engine.current_scene.particle_systems {
prepare_particle_system_for_rendering(system);
if system.particles.count > 0 {
push_cmd_set_draw_mode(renderer, .FILL);
push_cmd_set_depth_write(renderer, true);
push_cmd_set_cull_face(renderer, .BACK);
push_cmd_set_pipeline_state(renderer, system.pipeline);
push_cmd_set_draw_mode(engine.renderer, .FILL);
push_cmd_set_depth_write(engine.renderer, true);
push_cmd_set_cull_face(engine.renderer, .BACK);
push_cmd_set_pipeline_state(engine.renderer, system.pipeline);
push_cmd_set_constant_buffer(renderer, 0, camera_buffer, .VERTEX);
push_cmd_set_constant_buffer(engine.renderer, 0, engine.camera_buffer, .VERTEX);
push_cmd_set_vertex_buffer(renderer, system.vertex_buffer);
push_cmd_set_vertex_buffer(engine.renderer, system.vertex_buffer);
push_cmd_draw(renderer, system.particles.count * 6);
push_cmd_draw(engine.renderer, system.particles.count * 6);
}
}
}