void FixedUpdate()
    {
        int layerMask = 1 << 9;

        Collider[] cols = Physics.OverlapSphere(transform.position, 1f, layerMask);

        if (Scales.Pause == false)
        {
            Integrator.AdaptiveLeapfrog(ref pos2, ref vel2, Time.fixedDeltaTime, 2 * Time.fixedDeltaTime, cols, ref gravityLevel);
            transform.position = new Vector3(pos2.x, 0, pos2.y);
        }
    }
Exemple #2
0
    void Update()
    {
        line.enabled = isActive;

        foreach (GameObject go in spaceCraftHelper)
        {
            go.SetActive(isActive);
        }

        foreach (GameObject go in planetHelper)
        {
            go.SetActive(isActive);
        }

        if (line.enabled)
        {
            float   t         = 0;
            float   deltaTime = Mathf.Floor(POPlanet.Par [1] / 90);
            Vector3 velocity  = poEarth.ParametricVelocity();

            velocity += Speed * (Quaternion.Euler(0, Direction, 0) * velocity).normalized;

            initialVel2.Set(velocity.x, velocity.z);
            initialPos2.Set(earth.transform.position.x, earth.transform.position.z);

            for (int i = 0; i < lineRendererLength; i++)
            {
                t += deltaTime;
                line.SetPosition(i, new Vector3(initialPos2.x, 0, initialPos2.y));
                Integrator.AdaptiveLeapfrog(ref initialPos2, ref initialVel2, 1f, deltaTime);

                for (int j = 0; j < numOfHelpers; j++)
                {
                    if (t == 6f * (j + 1) * deltaTime)
                    {
                        spaceCraftHelper [j].transform.position = new Vector3(initialPos2.x, 0, initialPos2.y);
                    }
                }

                for (int j = 0; j < numOfHelpers; j++)
                {
                    if (t == 6f * (j + 1) * deltaTime)
                    {
                        planetHelper [j].transform.position = poPlanet.GetPositionAfterTime(t);
                    }
                }
            }
        }
    }