diff --git a/Editor/Editor.cpp b/Editor/Editor.cpp index b15159182..c0f871520 100644 --- a/Editor/Editor.cpp +++ b/Editor/Editor.cpp @@ -450,11 +450,8 @@ void EditorComponent::Load() scene.names.Create(pick.entity) = "collider"; break; case NEW_TERRAIN: - componentsWnd.terrainWnd.entity = pick.entity; componentsWnd.terrainWnd.SetupAssets(); - pick.entity = CreateEntity(); - scene.terrains.Create(pick.entity) = componentsWnd.terrainWnd.terrain_preset; - scene.names.Create(pick.entity) = "terrain"; + pick.entity = componentsWnd.terrainWnd.entity; break; case NEW_SPRITE: { @@ -580,7 +577,7 @@ void EditorComponent::Load() navtestButton.Create(ICON_NAVIGATION); navtestButton.SetShadowRadius(2); - navtestButton.SetTooltip("Toggle navigation testing. When enabled, you can visualize path finding results.\nYou can put down START and GOAL waypoints inside voxel grids to test path finding.\nControls:\n----------\nF5 + left click: put START to surface\nF6 + left click: put GOAL to surface\nF7 + left click: put START to air\nF8 + left click: put GOAL to air"); + navtestButton.SetTooltip("Toggle navigation testing. When enabled, you can visualize path finding results.\nYou can put down START and GOAL waypoints inside voxel grids to test path finding.\nControls:\n----------\nF5 + middle click: put START to surface\nF6 + middle click: put GOAL to surface\nF7 + middle click: put START to air\nF8 + middle click: put GOAL to air"); navtestButton.SetLocalizationEnabled(wi::gui::LocalizationEnabled::Tooltip); navtestButton.OnClick([&](wi::gui::EventArgs args) { navtest_enabled = !navtest_enabled; @@ -2255,12 +2252,12 @@ void EditorComponent::Update(float dt) { navtest_goal_pick = hovered; } - if (wi::input::Down(wi::input::KEYBOARD_BUTTON_F7) && wi::input::Down(wi::input::MOUSE_BUTTON_LEFT)) + if (wi::input::Down(wi::input::KEYBOARD_BUTTON_F7) && wi::input::Down(wi::input::MOUSE_BUTTON_MIDDLE)) { navtest_start_pick.entity = INVALID_ENTITY; XMStoreFloat3(&navtest_start_pick.position, XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction) * 2); } - if (wi::input::Down(wi::input::KEYBOARD_BUTTON_F8) && wi::input::Down(wi::input::MOUSE_BUTTON_LEFT)) + if (wi::input::Down(wi::input::KEYBOARD_BUTTON_F8) && wi::input::Down(wi::input::MOUSE_BUTTON_MIDDLE)) { navtest_goal_pick.entity = INVALID_ENTITY; XMStoreFloat3(&navtest_goal_pick.position, XMLoadFloat3(&pickRay.origin) + XMLoadFloat3(&pickRay.direction) * 2); @@ -4910,7 +4907,6 @@ void EditorComponent::RefreshSceneList() }); editorscene->tabCloseButton.OnClick([this, i](wi::gui::EventArgs args) { wi::lua::KillProcesses(); - componentsWnd.terrainWnd.terrain_preset.props.clear(); translator.selected.clear(); wi::scene::Scene& scene = scenes[i]->scene; diff --git a/Editor/TerrainWindow.cpp b/Editor/TerrainWindow.cpp index 3e6c19af4..fc009ee25 100644 --- a/Editor/TerrainWindow.cpp +++ b/Editor/TerrainWindow.cpp @@ -1311,10 +1311,7 @@ void TerrainWindow::SetEntity(Entity entity) wi::scene::Scene& scene = editor->GetCurrentScene(); terrain = scene.terrains.GetComponent(entity); if (terrain == nullptr) - { - entity = INVALID_ENTITY; - terrain = &terrain_preset; - } + return; propsWindow->terrain = terrain; @@ -1428,12 +1425,15 @@ void TerrainWindow::AddModifier(ModifierWindow* modifier_window) } void TerrainWindow::SetupAssets() { - if (!terrain_preset.props.empty()) - return; - // Customize terrain generator before it's initialized: Scene& currentScene = editor->GetCurrentScene(); + Entity terrainEntity = CreateEntity(); + wi::terrain::Terrain& terrain_preset = currentScene.terrains.Create(terrainEntity); + currentScene.names.Create(terrainEntity) = "terrain"; + + SetEntity(terrainEntity); + terrain_preset.materialEntities.clear(); terrain_preset.materialEntities.resize(wi::terrain::MATERIAL_COUNT); for (int i = 0; i < wi::terrain::MATERIAL_COUNT; ++i) @@ -1733,7 +1733,6 @@ void TerrainWindow::SetupAssets() transform.Translate(XMFLOAT3(0, 4, 0)); } - terrain = &terrain_preset; presetCombo.SetSelected(0); editor->paintToolWnd.RecreateTerrainMaterialButtons();