Only editable objects initiate editing state when using edit tool

This commit is contained in:
Yousef Khadadeh 2025-09-29 11:45:46 +03:00
parent 56b3c27401
commit 762016be4c
2 changed files with 9 additions and 12 deletions

View file

@ -92,6 +92,10 @@ void EditTool::edit_start(const std::shared_ptr<DrawComponent>& comp) {
}
}
bool EditTool::is_editable(const std::shared_ptr<DrawComponent>& comp) {
return comp->get_type() != DRAWCOMPONENT_BRUSHSTROKE;
}
void EditTool::tool_update() {
if(!controls.isEditing) {
SCollision::AABB<WorldScalar> mouseAABB{drawP.world.get_mouse_world_pos() - WorldVec{0.5f, 0.5f}, drawP.world.get_mouse_world_pos() + WorldVec{0.5f, 0.5f}};
@ -105,25 +109,17 @@ void EditTool::tool_update() {
camCMouseAABB.recalculate_bounds();
if(drawP.controls.leftClick) {
bool modifySelection = !drawP.selection.is_being_transformed();
if(drawP.world.main.input.mouse.leftClicks >= 2 && !drawP.world.main.input.key(InputManager::KEY_GENERIC_LSHIFT).held && !drawP.world.main.input.key(InputManager::KEY_GENERIC_LALT).held) {
CollabListType::ObjectInfoPtr selectedObjectToEdit = drawP.selection.get_front_object_colliding_with(camCMouseAABB);
if(selectedObjectToEdit) {
if(selectedObjectToEdit && is_editable(selectedObjectToEdit->obj)) {
drawP.selection.deselect_all();
edit_start(selectedObjectToEdit->obj);
}
else {
if(drawP.world.main.input.key(InputManager::KEY_GENERIC_LSHIFT).held)
drawP.selection.add_from_cam_coord_collider_to_selection(camCMouseAABB, true);
else if(drawP.world.main.input.key(InputManager::KEY_GENERIC_LALT).held)
drawP.selection.remove_from_cam_coord_collider_to_selection(camCMouseAABB, true);
else {
drawP.selection.deselect_all();
drawP.selection.add_from_cam_coord_collider_to_selection(camCMouseAABB, true);
}
modifySelection = false;
}
}
else if(!drawP.selection.is_being_transformed()) {
if(modifySelection) {
if(drawP.world.main.input.key(InputManager::KEY_GENERIC_LSHIFT).held)
drawP.selection.add_from_cam_coord_collider_to_selection(camCMouseAABB, true);
else if(drawP.world.main.input.key(InputManager::KEY_GENERIC_LALT).held)

View file

@ -27,6 +27,7 @@ class EditTool : public DrawingProgramToolBase {
void add_point_handle(const HandleData& handle);
void edit_start(const std::shared_ptr<DrawComponent>& comp);
bool is_editable(const std::shared_ptr<DrawComponent>& comp);
struct EditControls {
std::unique_ptr<DrawingProgramEditToolBase> compEditTool;