@@ -21,10 +21,10 @@ namespace egkr
2121 shader_system::create_shader (*properties, renderpasses_[0 ].get ());
2222 resource_system::unload (colour_shader);
2323
24- auto col_shader = shader_system::get_shader (colour_3d_shader_name);
25- locations_.projection = col_shader ->get_uniform_index (" projection" );
26- locations_.view = col_shader ->get_uniform_index (" view" );
27- locations_.model = col_shader ->get_uniform_index (" model" );
24+ colour_shader_ = shader_system::get_shader (colour_3d_shader_name);
25+ locations_.projection = colour_shader_ ->get_uniform_index (" projection" );
26+ locations_.view = colour_shader_ ->get_uniform_index (" view" );
27+ locations_.model = colour_shader_ ->get_uniform_index (" model" );
2828 event::register_event (event::code::render_target_refresh_required, this , on_event);
2929 return true ;
3030 }
@@ -43,13 +43,13 @@ namespace egkr
4343 height_ = height;
4444 }
4545 }
46- render_view_packet render_view_editor::on_build_packet (void * data, viewport* viewport)
46+ render_view_packet render_view_editor::on_build_packet (void * data, const camera::shared_ptr& camera, viewport* viewport)
4747 {
4848 render_view_packet packet{};
4949
5050 packet.view = this ;
51- packet.view_matrix = camera_ ->get_view ();
52- packet.view_position = camera_ ->get_position ();
51+ packet.view_matrix = camera ->get_view ();
52+ packet.view_position = camera ->get_position ();
5353 packet.ambient_colour = ambient_colour_;
5454 packet.view_viewport = viewport;
5555 gizmo_ = *(editor::gizmo*)data;
@@ -65,21 +65,19 @@ namespace egkr
6565 {
6666 pass->begin (pass->get_render_targets ()[frame_data.render_target_index ].get ());
6767
68- auto colour_shader = shader_system::get_shader (" Shader.Builtin.Colour3DShader" );
69- shader_system::use (colour_shader->get_id ());
70- colour_shader->bind_globals ();
71- bool needs_update = (frame_data.frame_number != colour_shader->get_frame_number ()) || (frame_data.draw_index != colour_shader->get_draw_index ());
68+ shader_system::use (colour_shader_->get_id ());
69+ colour_shader_->bind_globals ();
70+ bool needs_update = (frame_data.frame_number != colour_shader_->get_frame_number ()) || (frame_data.draw_index != colour_shader_->get_draw_index ());
7271 if (needs_update)
7372 {
7473 shader_system::set_uniform (locations_.projection , &render_view_packet->view_viewport ->projection );
7574 shader_system::set_uniform (locations_.view , &render_view_packet->view_matrix );
7675 }
7776 shader_system::apply_global (needs_update);
7877
79- const auto & camera_position = camera_->get_position ();
8078 const auto & gizmo_position = gizmo_.get_position ();
8179
82- const auto distance = glm::distance (camera_position , gizmo_position);
80+ const auto distance = glm::distance (render_view_packet-> view_position , gizmo_position);
8381
8482 gizmo_.get_selected_model ()
8583 .and_then ([&](float4x4 model) -> std::optional<float4x4>
@@ -91,7 +89,7 @@ namespace egkr
9189 glm::quat rotation;
9290 glm::decompose (model, model_scale, rotation, translation, skew, perspective);
9391 const float fixed_size{ 0 .1F };
94- auto scale_factor = (2 * std::tan (camera_-> get_fov () / 2 ) * distance) * fixed_size;
92+ auto scale_factor = (2 * std::tan (render_view_packet-> view_viewport -> fov / 2 ) * distance) * fixed_size;
9593 editor::gizmo::set_scale (scale_factor);
9694 float4x4 scale = glm::scale (glm::mat4x4 (1 .f ), { scale_factor, scale_factor, scale_factor });
9795
0 commit comments