Fix bug in transform handles only allowing Y axis to function
This commit is contained in:
parent
5fa5ae32bf
commit
b242f5b2cf
1 changed files with 17 additions and 10 deletions
|
@ -358,9 +358,9 @@ void DebugPass::render_scene(Scene& scene, GFXCommandBuffer* commandBuffer) {
|
|||
|
||||
// draw handles for selected object;
|
||||
if(selected_object != NullObject && engine->get_scene()->has<Transform>(selected_object)) {
|
||||
auto position = engine->get_scene()->get<Transform>(selected_object).get_world_position();
|
||||
const auto position = engine->get_scene()->get<Transform>(selected_object).get_world_position();
|
||||
|
||||
const float base_scale = 0.05;
|
||||
const float base_scale = 0.05f;
|
||||
const float scale_factor = length(position - scene.get<Transform>(camObj).get_world_position());
|
||||
|
||||
Matrix4x4 base_model = transform::translate(Matrix4x4(), position);
|
||||
|
@ -458,24 +458,25 @@ void DebugPass::get_selected_object(int x, int y, std::function<void(SelectableO
|
|||
so.type = SelectableObject::Type::Handle;
|
||||
so.axis = axis;
|
||||
so.axis_model = model;
|
||||
so.object = selected_object;
|
||||
|
||||
selectable_objects.push_back(so);
|
||||
};
|
||||
|
||||
if(selected_object != NullObject) {
|
||||
auto position = engine->get_scene()->get<Transform>(selected_object).get_world_position();
|
||||
const auto position = engine->get_scene()->get<Transform>(selected_object).get_world_position();
|
||||
|
||||
const float base_scale = 0.05;
|
||||
const float base_scale = 0.05f;
|
||||
const float scale_factor = length(position - engine->get_scene()->get<Transform>(camObj).position);
|
||||
|
||||
Matrix4x4 base_model = transform::translate(Matrix4x4(), position);
|
||||
base_model = transform::scale(base_model, base_scale * scale_factor);
|
||||
const Matrix4x4 translate_model = transform::translate(Matrix4x4(), position);
|
||||
const Matrix4x4 scale_model = transform::scale(Matrix4x4(), base_scale * scale_factor);
|
||||
|
||||
add_arrow(SelectableObject::Axis::Y, base_model);
|
||||
add_arrow(SelectableObject::Axis::Y, translate_model * scale_model);
|
||||
|
||||
add_arrow(SelectableObject::Axis::X, base_model * matrix_from_quat(angle_axis(radians(-90.0f), Vector3(0, 0, 1))));
|
||||
add_arrow(SelectableObject::Axis::X, translate_model * matrix_from_quat(angle_axis(radians(-90.0f), Vector3(0, 0, 1))) * scale_model);
|
||||
|
||||
add_arrow(SelectableObject::Axis::Z, base_model * matrix_from_quat(angle_axis(radians(90.0f), Vector3(1, 0, 0))));
|
||||
add_arrow(SelectableObject::Axis::Z, translate_model * matrix_from_quat(angle_axis(radians(90.0f), Vector3(1, 0, 0))) * scale_model);
|
||||
}
|
||||
|
||||
GFXCommandBuffer* commandBuffer = engine->get_gfx()->acquire_command_buffer();
|
||||
|
@ -488,6 +489,12 @@ void DebugPass::get_selected_object(int x, int y, std::function<void(SelectableO
|
|||
|
||||
commandBuffer->set_render_pass(info);
|
||||
|
||||
Viewport viewport = {};
|
||||
viewport.width = extent.width;
|
||||
viewport.height = extent.height;
|
||||
|
||||
commandBuffer->set_viewport(viewport);
|
||||
|
||||
commandBuffer->set_pipeline(selectPipeline);
|
||||
|
||||
for(auto [i, object] : utility::enumerate(selectable_objects)) {
|
||||
|
|
Reference in a new issue