public override void Assign(ArcEvent newValues) { base.Assign(newValues); ArcCamera n = newValues as ArcCamera; Move = n.Move; Rotate = n.Rotate; CameraType = n.CameraType; Duration = n.Duration; }
private void UpdateCameraPosition() { int currentTiming = ArcGameplayManager.Instance.Timing; int offset = ArcAudioManager.Instance.AudioOffset; currentTiming -= offset; for (int i = 0; i < Cameras.Count; ++i) { ArcCamera c = Cameras[i]; if (c.Timing > currentTiming) { break; } c.Update(currentTiming); if (c.CameraType == Chart.CameraEaseType.Reset) { for (int r = 0; r < i; ++r) { ArcCamera cr = Cameras[r]; cr.Update(c.Timing); } } } Vector3 position = ResetPosition; Vector3 rotation = ResetRotation; IsReset = true; foreach (var c in Cameras) { if (c.Timing > currentTiming) { break; } IsReset = c.CameraType == Chart.CameraEaseType.Reset; if (IsReset) { position = ResetPosition; rotation = ResetRotation; } position += new Vector3(-c.Move.x, c.Move.y, c.Move.z) * c.Percent / 100; rotation += new Vector3(-c.Rotate.y, -c.Rotate.x, c.Rotate.z) * c.Percent; } GameplayCamera.transform.localPosition = position; GameplayCamera.transform.localRotation = Quaternion.Euler(0, 0, rotation.z) * Quaternion.Euler(rotation.x, rotation.y, 0); }