mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-06 00:53:52 +00:00
fix(editor): terrain raycast on rough terrain, keyboard shortcuts, context menu
- Raycast AABB now uses actual min/max vertex heights per chunk instead of fixed ±200 padding (fixes misses on sculpted terrain) - Right-click context menu opens correctly (deferred popup via flag since ImGui::OpenPopup must be called within ImGui frame) - Keyboard shortcuts: G=Move, R=Rotate, T=Scale, X/Y=axis lock, Escape=deselect, Delete works in any mode for objects/NPCs - Delete key now removes selected NPC in NPC mode too
This commit is contained in:
parent
f38884856f
commit
ace6173401
4 changed files with 40 additions and 7 deletions
|
|
@ -189,9 +189,27 @@ void EditorApp::processEvents() {
|
|||
if (event.type == SDL_KEYDOWN) {
|
||||
auto sc = event.key.keysym.scancode;
|
||||
if (sc == SDL_SCANCODE_F3) setWireframe(!isWireframe());
|
||||
if (sc == SDL_SCANCODE_DELETE && mode_ == EditorMode::PlaceObject) {
|
||||
objectPlacer_.deleteSelected();
|
||||
objectsDirty_ = true;
|
||||
// Transform shortcuts (Blender-style)
|
||||
if (objectPlacer_.getSelected()) {
|
||||
if (sc == SDL_SCANCODE_G) startGizmoMode(TransformMode::Move);
|
||||
if (sc == SDL_SCANCODE_R) startGizmoMode(TransformMode::Rotate);
|
||||
if (sc == SDL_SCANCODE_T) startGizmoMode(TransformMode::Scale);
|
||||
if (sc == SDL_SCANCODE_X) setGizmoAxis(TransformAxis::X);
|
||||
if (sc == SDL_SCANCODE_Y) setGizmoAxis(TransformAxis::Y);
|
||||
if (sc == SDL_SCANCODE_ESCAPE) {
|
||||
viewport_.getGizmo().endDrag();
|
||||
viewport_.getGizmo().setMode(TransformMode::None);
|
||||
objectPlacer_.clearSelection();
|
||||
}
|
||||
}
|
||||
if (sc == SDL_SCANCODE_DELETE) {
|
||||
if (objectPlacer_.getSelected()) {
|
||||
objectPlacer_.deleteSelected();
|
||||
objectsDirty_ = true;
|
||||
} else if (npcSpawner_.getSelected()) {
|
||||
npcSpawner_.removeCreature(npcSpawner_.getSelectedIndex());
|
||||
objectsDirty_ = true;
|
||||
}
|
||||
}
|
||||
if (sc == SDL_SCANCODE_Z && (event.key.keysym.mod & KMOD_CTRL)) {
|
||||
if (event.key.keysym.mod & KMOD_SHIFT)
|
||||
|
|
@ -242,7 +260,7 @@ void EditorApp::processEvents() {
|
|||
giz.endDrag();
|
||||
giz.setMode(TransformMode::None);
|
||||
} else if (objectPlacer_.getSelected()) {
|
||||
ImGui::OpenPopup("ObjectContextMenu");
|
||||
openContextMenu_ = true;
|
||||
} else {
|
||||
camera_.processMouseButton(event.button);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue