コード例 #1
0
ファイル: AstBeltController.cs プロジェクト: Storm-23/Planets
    void Update()
    {
        transform.position = body.Position * StateBus.DistanceScale;
        transform.rotation = body.Rotation;

        foreach (var info in asteroids)
        {
            info.DeltaTime += info.DeltaTime2 * Time.deltaTime;
            if (info.DeltaTime > maxDeltaTime)
            {
                //reset asteroid from other end of ring
                info.DeltaTime = -maxDeltaTime;
                InitShader(info.Object);//change visual
            }

            info.Object.transform.position = body.GetPosition(StateBus.ModelTime + info.DeltaTime) * StateBus.DistanceScale + info.Offset;
            var addRot = info.AddRotation2 * Time.deltaTime;
            info.AddRotation *= Quaternion.Euler(addRot.x, addRot.y, addRot.z);
            info.Object.transform.rotation = body.Rotation * info.AddRotation;

            var size = (float)(body.Radius * StateBus.SizeScale) * info.Scale;
            if (StateBus.LogarithmicSize)
            {
                size = Mathf.Log(size + 1, 3f);
            }

            var distanceScale = 1 - Mathf.Pow(info.DeltaTime / maxDeltaTime, 2);
            size *= distanceScale;

            info.Object.transform.localScale = new Vector3(size, size, size);
        }
    }
コード例 #2
0
ファイル: PlanetController.cs プロジェクト: Storm-23/Planets
    void UpdateTrajectory()
    {
        if (!line)
        {
            return;
        }
        if (body.Mass < Constants.EARTH_MASS / 10)
        {
            return;
        }
        if (body.OrbitalSpeed < 1)
        {
            return;
        }

        var t     = StateBus.ModelTime;
        var stepT = (body.OrbitRadius / body.OrbitalSpeed) / points.Length * Mathf.PI * 2;

        for (int i = 0; i < points.Length; i++)
        {
            points[i] = body.GetPosition(t) * StateBus.DistanceScale;
            t        -= stepT;
        }

        line.positionCount = points.Length;
        line.SetPositions(points);
        line.loop = true;
    }