예제 #1
0
        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);
        }