public void ProcessFixedUpdate(Scene scene) { var box = scene.AllEntities.Single(e => e.HasComponent <BoxMovementComponent>()); var mousePointer = scene.RootEntities.Single(e => e.HasComponent <MousePointerComponent>()); var camera = scene.AllEntities.Single(e => e.HasComponent <CameraComponent>()); foreach (var entity in scene.AllEntities.ToList()) { if (entity.HasComponent <DieFromBoxComponent>()) { var collider = entity.GetComponent <CircleColliderComponent>(); if (collider.IsColliding) { var collidedWithBox = collider.CollidingEntities.Contains(box); var collidedWithMousePointer = collider.CollidingEntities.Contains(mousePointer); var mousePointerHasLeftButtonPressed = mousePointer.GetComponent <MousePointerComponent>().LeftButtonPressed; if (collidedWithBox || (collidedWithMousePointer && mousePointerHasLeftButtonPressed)) { _audioPlayer.PlayOnce(_assetStore.GetAsset <ISound>(AssetsIds.SfxSound)); entity.DestroyAfterFixedTimeStep(); } } } if (entity.HasComponent <CloseGameOnEscapeKeyComponent>()) { var inputComponent = entity.GetComponent <InputComponent>(); if (inputComponent.HardwareInput.KeyboardInput.Escape) { _engineManager.ScheduleEngineShutdown(); } if (inputComponent.HardwareInput.KeyboardInput.F5) { _sceneLoader.Save(scene, "quicksave.geisha-scene"); } if (inputComponent.HardwareInput.KeyboardInput.F9) { _sceneManager.LoadScene("quicksave.geisha-scene"); } var mouseScrollDelta = inputComponent.HardwareInput.MouseInput.ScrollDelta; var scalingFactor = 0.0001 * mouseScrollDelta; //box.GetComponent<Transform2DComponent>().Scale += new Vector2(scalingFactor, scalingFactor); scalingFactor = mouseScrollDelta == 0 ? 1 : mouseScrollDelta > 0 ? 10d / 11d : 11d / 10d; camera.GetComponent <CameraComponent>().ViewRectangle *= scalingFactor; } } }
public override void SaveDocument() { _sceneLoader.Save(_scene, _sceneFilePath); }