public static void SharedVisualizeTestResults( ITempList <TestResult> physicsTestResults, CollisionGroup collisionGroup) { if (IsClient) { using var testResults = Api.Shared.GetTempList <Vector2D>(); AddTestResults(physicsTestResults.AsList(), testResults.AsList()); ClientComponentPhysicsSpaceVisualizer.VisualizeTestResults(testResults.AsList(), collisionGroup, isClient: true); } else // if server { Api.Assert(Api.IsEditor, "This is Editor-only server code"); var allPlayers = Server.Characters.EnumerateAllPlayerCharacters(onlyOnline: true, exceptSpectators: false); var testResults = new List <Vector2D>(); AddTestResults(physicsTestResults.AsList(), testResults); var collisionGroupId = CollisionGroups.GetCollisionGroupId(collisionGroup); instance.CallClient( allPlayers, // ReSharper disable once AccessToDisposedClosure _ => _.ClientRemote_ProcessServerTestResults(testResults, collisionGroupId)); } }
private void ClientRemote_ProcessServerTestResults( List <Vector2D> testResults, CollisionGroupId collisionGroupId) { var collisionGroup = CollisionGroups.GetCollisionGroup(collisionGroupId); ClientComponentPhysicsSpaceVisualizer.VisualizeTestResults(testResults, collisionGroup, isClient: false); }
private void ClientRemote_ProcessServerDebugPhysicsTesting(BasePhysicsShapeRemoteData wrappedShape) { var shape = PhysicsShapeRemoteDataHelper.Unwrap(wrappedShape); ClientComponentPhysicsSpaceVisualizer.ProcessServerDebugPhysicsTesting(shape); }
public override void ClientInitialize() { var scene = Api.Client.Scene; ClientComponentDebugGrid.Instance.Refresh(); ClientDebugGuidesManager.Instance.Refresh(); ClientComponentPhysicsSpaceVisualizer.Init(); scene.CreateSceneObject("FPS Counter") .AddComponent <ClientComponentPerformanceIndicatorsManager>(); scene.CreateSceneObject("Console manager") .AddComponent <ClientComponentConsoleErrorsWatcher>(); ClientInputContext.Start("Console toggle") .HandleButtonDown( GameButton.ToggleDeveloperConsole, ConsoleControl.Toggle, evenIfHandled: true); ClientInputContext.Start("Debug tools toggle") .HandleButtonDown( GameButton.ToggleDebugToolsOverlay, DebugToolsOverlay.Toggle); ClientInputContext.Start("Full screen toggle") .HandleButtonDown( GameButton.ToggleFullscreen, () => { var option = Api.GetProtoEntity <VideoOptionScreenMode>(); option.CurrentValue = option.CurrentValue != VideoOptionScreenMode.ScreenMode.Fullscreen ? VideoOptionScreenMode.ScreenMode.Fullscreen : VideoOptionScreenMode.ScreenMode.Windowed; option.Category.ApplyAndSave(); }, evenIfHandled: true); ClientInputContext.Start("Main menu overlay") .HandleButtonDown( GameButton.CancelOrClose, MainMenuOverlay.Toggle); ClientInputContext.Start("Capture screenshot") .HandleButtonDown( GameButton.CaptureScreenshot, () => { if (Client.SteamApi.IsSteamClient && Client.Input.IsKeyDown(InputKey.F12, evenIfHandled: true)) { // The default screenshot key (F12) was pressed while playing from Steam Client. // It will trigger a screenshot by Steam Client (if it using the default key binding). // Ignore the in-game screenshot functionality to avoid any issues with Steam Client. return; } Client.Rendering.CaptureScreenshot(); Api.Client.Audio.PlayOneShot(new SoundResource("UI/Notifications/Screenshot")); }, evenIfHandled: true); ScreenshotNotification.InitializeScreenshotOverlaySystem(); }