/// <summary> /// Zatrzymuje symulacje /// </summary> public static void Stop() { PlanetPositioner.ResetPlanetsPosition(); PlanetForce.StopPlanets(); Game.SetState(GameState.Creative); PlanetColliders.Enable(false); MenuSwitcher.Switch(MenuState.Free); }
/// <summary> /// Zapisanie właściwości planety /// </summary> private void PlanetMenuSaveButtonClick() { PlanetData.SelectedPlanet.PlanetName = PlanetNameChecker.Check(PlanetMenuNameInput.text); PlanetData.SelectedPlanet.Mass = PlanetMenuMassSlider.value; PlanetData.SelectedPlanet.Speed = PlanetMenuSpeedSlider.value; PlanetPositioner.ResetRotation(PlanetData.SelectedPlanet); MenuSwitcher.Switch(MenuState.Distance); CameraFocus.OnPlanetsView(); }
/// <summary> /// Spojrzenie kamery na planetę /// </summary> /// <param name="transform">Wybrany obiekt</param> /// <param name="saveCameraPosition">Określa czy zapisać pozycję kamery, którą później będzie można wykorzystać do powrotu</param> public static void OnPlanet(IMovingPlanet planet, bool saveCameraPosition) { //if (state != CameraState.Free) // return; PlanetData.SelectedPlanet = (Planet)planet; camera.State = CameraState.Focusing; //Zapisanie poprzedniej pozycji i rotacji kamery if (saveCameraPosition) { previousCameraPosition = camera.transform.position; previousCameraRotation = camera.transform.rotation; } //Zapisanie rotacji planety PlanetData.SaveRotation(planet); //Ustawienie planety w taki sposób, aby "patrzyła się" na kamerę. Dzięki temu łatwo poprowadzić od niej potrzebne wektory planet.transform.LookAt(camera.transform); //Określenie wielkośći planety float planetSize = planet.transform.localScale.x; //Punkt do którego kamera ma dotrzeć newCameraPosition = planet.transform.position + (planet.transform.forward * planetSize * 2); //Punkt na który kamera ma spojrzeć lookAtPoint = planet.transform.position - (planet.transform.right * planetSize); //Rotacja kamery obliczona na podstawie wektora między punktem dotarcia a punktem patrzenia lookAtDirection = Quaternion.LookRotation(lookAtPoint - newCameraPosition); //Przywrócenie poprzedniej rotacji planety PlanetPositioner.ResetRotation(planet); //Wyświetl menu edycji planety MenuSwitcher.Switch(MenuState.PlanetEdit); }