Example #1
0
 /// <summary>
 /// Rozpoczyna symulacje
 /// </summary>
 public static void Start()
 {
     Game.SetState(GameState.Simulation);
     PlanetColliders.Enable(true);
     PlanetForce.PushPlanets();
     MenuSwitcher.Switch(MenuState.Simulation);
 }
Example #2
0
 /// <summary>
 /// Usunięcie planety z układu słonecznego
 /// </summary>
 private void PlanetMenuDeleteButtonClick()
 {
     PlanetManager.Destroy(PlanetData.SelectedPlanet);
     MenuSwitcher.Switch(MenuState.Free);
     CameraFocus.Unfocus();
     RefreshSelectPlanetDropdown();
 }
Example #3
0
 /// <summary>
 /// Zatrzymuje symulacje
 /// </summary>
 public static void Stop()
 {
     PlanetPositioner.ResetPlanetsPosition();
     PlanetForce.StopPlanets();
     Game.SetState(GameState.Creative);
     PlanetColliders.Enable(false);
     MenuSwitcher.Switch(MenuState.Free);
 }
Example #4
0
    /// <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();
    }
    // Use this for initialization
    void Start()
    {
        LoadSun();
        PlanetColliders.Enable(false);

        Game.SetState(GameState.Creative);

        //Odpalanie menu na starcie
        MenuSwitcher.Switch(MenuState.Free);
    }
Example #6
0
    /// <summary>
    /// Funkcja odfocusowuje kamere po tym jak zostałą skupiona na planecie
    /// </summary>
    public static void Unfocus()
    {
        camera.State = CameraState.Unfocusing;

        newCameraPosition = previousCameraPosition;
        lookAtDirection   = previousCameraRotation;

        Factory.GetUIController().DeselectPlanetDropDown();
        MenuSwitcher.Switch(MenuState.Free);

        //Jeżeli planeta dopiero co zostala stworzona i nie została ustawiona na układzie słonecznym, to zostaje usunięta
        if (PlanetData.SelectedPlanet != null && PlanetData.SelectedPlanet.SunDistance == 220f)
        {
            PlanetManager.Destroy(PlanetData.SelectedPlanet);
        }
    }
Example #7
0
    private void SelectPlanetDropdownValueChange(int index)
    {
        //Odznaczenie planet
        if (index == 0)
        {
            CameraFocus.Unfocus();
            return;
        }

        //Zaznaczenie planety
        foreach (IMovingPlanet planet in PlanetData.Planets)
        {
            if (planet.PlanetName == selectPlanetList[index])
            {
                CameraFocus.OnPlanet(planet, true);
                MenuSwitcher.Switch(MenuState.PlanetEdit);
                break;
            }
        }
    }
Example #8
0
    /// <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);
    }
Example #9
0
 /// <summary>
 /// Zapisanie pozycji i wielkości planety
 /// </summary>
 private void DistanceMenuAddButtonClick()
 {
     MenuSwitcher.Switch(MenuState.Free);
     CameraFocus.Unfocus();
 }