mirror of
https://github.com/Facepunch/sbox-public.git
synced 2026-04-19 13:59:22 -04:00
* SceneEditorSession: make game vs editor scenes more distinct, Scene is whichever is currently active * Route prefab update, model reload etc events to both scenes if needed * SceneTree update checking a bit cleaner * Bring back GameEditorSessions instead, so undo, selection etc can all be linked 1:1 with scenes again * tweak and tidy
56 lines
1.3 KiB
C#
56 lines
1.3 KiB
C#
namespace Editor;
|
|
|
|
public partial class SceneViewportWidget
|
|
{
|
|
public void StartPlay()
|
|
{
|
|
Editor.GameMode.SetPlayWidget( Renderer );
|
|
Renderer.Scene = Session.Scene;
|
|
Renderer.Camera = null;
|
|
Renderer.EnableEngineOverlays = true;
|
|
ViewportOptions.Visible = false;
|
|
}
|
|
|
|
public void StopPlay()
|
|
{
|
|
Editor.GameMode.ClearPlayMode();
|
|
Renderer.Scene = Session.Scene;
|
|
_activeCamera = _editorCamera;
|
|
Renderer.Camera = _activeCamera;
|
|
Renderer.EnableEngineOverlays = false;
|
|
ViewportOptions.Visible = true;
|
|
SetDefaultSize();
|
|
}
|
|
|
|
public void EjectGameCamera()
|
|
{
|
|
Editor.GameMode.ClearPlayMode();
|
|
|
|
var gameCamera = Renderer.Scene.Camera;
|
|
if ( gameCamera.IsValid() )
|
|
{
|
|
// put the scene camera at the game cam's transform
|
|
State.CameraPosition = gameCamera.WorldPosition;
|
|
State.CameraRotation = gameCamera.WorldRotation;
|
|
}
|
|
|
|
if ( !_ejectCamera.IsValid() )
|
|
_ejectCamera = Renderer.CreateSceneEditorCamera();
|
|
|
|
_activeCamera = _ejectCamera;
|
|
Renderer.Camera = _activeCamera;
|
|
Renderer.EnableEngineOverlays = false;
|
|
ViewportOptions.Visible = true;
|
|
SetDefaultSize();
|
|
}
|
|
|
|
public void PossesGameCamera()
|
|
{
|
|
Editor.GameMode.SetPlayWidget( Renderer );
|
|
_activeCamera = null;
|
|
Renderer.Camera = null;
|
|
Renderer.EnableEngineOverlays = true;
|
|
ViewportOptions.Visible = false;
|
|
}
|
|
}
|