mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-05-06 09:03:52 +00:00
feat(editor): undo object placement, snap to ground, keyboard shortcuts
- Ctrl+Z in Object/NPC mode undoes last placement (50-deep stack) - "Snap Ground" button raycasts straight down to place object on terrain - Useful for objects placed too high or moved off terrain surface - Undo stack adjusts indices when objects are removed mid-stack
This commit is contained in:
parent
ace6173401
commit
88abbfb564
5 changed files with 50 additions and 5 deletions
|
|
@ -212,10 +212,17 @@ void EditorApp::processEvents() {
|
|||
}
|
||||
}
|
||||
if (sc == SDL_SCANCODE_Z && (event.key.keysym.mod & KMOD_CTRL)) {
|
||||
if (event.key.keysym.mod & KMOD_SHIFT)
|
||||
terrainEditor_.redo();
|
||||
else
|
||||
terrainEditor_.undo();
|
||||
if (mode_ == EditorMode::Sculpt) {
|
||||
if (event.key.keysym.mod & KMOD_SHIFT)
|
||||
terrainEditor_.redo();
|
||||
else
|
||||
terrainEditor_.undo();
|
||||
} else if (mode_ == EditorMode::PlaceObject || mode_ == EditorMode::NPC) {
|
||||
if (!(event.key.keysym.mod & KMOD_SHIFT) && objectPlacer_.canUndoPlace()) {
|
||||
objectPlacer_.undoLastPlace();
|
||||
objectsDirty_ = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!io.WantCaptureKeyboard)
|
||||
|
|
@ -554,6 +561,21 @@ void EditorApp::setGizmoAxis(TransformAxis axis) {
|
|||
viewport_.getGizmo().setTarget(sel->position, sel->scale);
|
||||
}
|
||||
|
||||
void EditorApp::snapSelectedToGround() {
|
||||
auto* sel = objectPlacer_.getSelected();
|
||||
if (!sel || !terrain_.isLoaded()) return;
|
||||
|
||||
// Cast ray straight down from object position
|
||||
rendering::Ray ray;
|
||||
ray.origin = sel->position + glm::vec3(0, 0, 500);
|
||||
ray.direction = glm::vec3(0, 0, -1);
|
||||
glm::vec3 hitPos;
|
||||
if (terrainEditor_.raycastTerrain(ray, hitPos)) {
|
||||
sel->position.z = hitPos.z;
|
||||
objectsDirty_ = true;
|
||||
}
|
||||
}
|
||||
|
||||
void EditorApp::resetCamera() {
|
||||
camera_.setPosition(glm::vec3(0.0f, 0.0f, 300.0f));
|
||||
camera_.setYawPitch(0.0f, -30.0f);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue