Tiny refactor
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user