Пример #1
0
    public void ResetOmeter()
    {
        if (SpawnedOmeter == null)
        {
            return;
        }

        ISettings       settings = Bootstrap.Settings;
        AngleOmeterData data     = SpawnedOmeter.GetComponent <AngleOmeterData>();

        data.StartAngle    = settings.MinAngle;
        data.EndAngle      = settings.MaxAngle;
        data.RotationSpeed = settings.RotationSpeed;
    }
Пример #2
0
    private static void UpdateOmeter(GameObject ometer, AngleOmeterSpawnData data)
    {
        AngleOmeterData ometerData = ometer.GetComponent <AngleOmeterData>();
        ISettings       settings   = Bootstrap.Settings;

        ometerData.FacingRight = data.Position.x < 0;
        ometerData.StartAngle  = ometerData.FacingRight ? settings.MinAngle : 180 - settings.MinAngle;

        Quaternion rotation = Quaternion.AngleAxis(ometerData.StartAngle, Vector3.forward);

        ometer.transform.rotation = rotation;
        ometer.transform.position = data.Position;

        //rotation speed
        ometerData.RotationSpeed *= data.RateOfChangeMultiplier;
        ometerData.RotationSpeed  = Mathf.Clamp(ometerData.RotationSpeed, ometerData.RotationSpeed, settings.MaxRotationSpeed);

        //flip end angle if needed
        if (!Mathf.Approximately(settings.MaxAngle, 90f))
        {
            float diff = Mathf.Abs(settings.MaxAngle - 90);
            ometerData.EndAngle = ometerData.FacingRight ? 90 - diff : 90 + diff;
        }
    }