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; }
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; } }