Esempio n. 1
0
        void CheckReadyTransform(CueBehavior cueBehavior)
        {
            if (posReady)
            {
                return;
            }

            if (cueBehavior == null)
            {
                EndSnapPlayer();
                return;
            }

            smooth_l0 = Mathf.SmoothDamp(smooth_l0, 1.0f, ref smooth_l0v, cueBehavior.smoothPositionTime);
            smooth_l1 = Mathf.SmoothDamp(smooth_l1, 1.0f, ref smooth_l1v, cueBehavior.smoothRotationTime);

            player.transform.position = Vector3.Lerp(initialPlayerTransform.pos, runtimeTransform.pos, smooth_l0);
            player.transform.rotation = Quaternion.Slerp(initialPlayerTransform.rot, runtimeTransform.rot, smooth_l1);

            const float threshold = .99f;

            if (smooth_l0 > threshold && smooth_l1 > threshold)
            {
                EndSnapPlayer();
                BroadcastMessageToPlayer(layer, player, runtimeTransform, cueBehavior, Cue.MessageEvent.OnSnap);
            }
        }
Esempio n. 2
0
 public void UpdateHead(CueBehavior cueBehavior)
 {
     if (!isActive)
     {
         return;
     }
     CheckReadyTransform(cueBehavior);
 }
Esempio n. 3
0
 void Deactivate()
 {
     BroadcastMessageToPlayer(layer, player, runtimeTransform, cueBehavior, Cue.MessageEvent.OnEnd);
     player.cueMoving = false;
     cueBehavior      = null;
     player           = null;
     isActive         = false;
 }
Esempio n. 4
0
        CueBehavior GetCurrentCueBehavior()
        {
            CueBehavior cueBehavior = null;

            // playing physical cue
            if (playlistChannel.cues != null)
            {
                cueBehavior = playlistChannel.cues[cueIndex].behavior;
            }
            // just playing cue behavior
            else if (playlistChannel.cueBehavior != null)
            {
                cueBehavior = playlistChannel.cueBehavior;
            }
            return(cueBehavior);
        }
Esempio n. 5
0
        public void OnPlay(string debugReason, bool forceInterrupt, Cue cue, CueBehavior cueBehavior, Event[] aoEvents)
        {
            isPlaying = true;

            BroadcastMessageToPlayer(layer, player, runtimeTransform, cueBehavior, Cue.MessageEvent.OnPlay);

            if (cue != null && CueIsPlaylist(cue))
            {
                InitializePerformanceInternal(debugReason + " / " + cue.name, layer, cue, player, runtimeTransform, forceInterrupt, OnPlaylistEnd);
            }
            else
            {
                Event[] eventsToPlay = cueBehavior != null ? cueBehavior.events : aoEvents;
                string  eventsName   = cue != null ? cue.name : (cueBehavior != null ? cueBehavior.name : aoEvents[0].name);

                player.SubscribeToPlayEnd(layer, OnEventEnd);
                player.PlayEvents(debugReason, eventsName, runtimeTransform, eventsToPlay, layer, cueBehavior != null ? cueBehavior.overrideDuration : -1, forceInterrupt);
            }
        }
Esempio n. 6
0
        public void OnStart(bool isTopLevel, Playlist.Channel playlistChannel, Cue cue, CueBehavior cueBehavior, Event[] aoEvents, int layer, EventPlayer player, MiniTransform suppliedTransform)
        {
            this.cueBehavior   = cueBehavior;
            this.player        = player;
            this.layer         = layer;
            this.playImmediate = cueBehavior != null && cueBehavior.playImmediate;

            isActive  = true;
            posReady  = true;
            isPlaying = false;

            // if we're loading a sub cue of a cue playlist
            if (!isTopLevel)
            {
                Vector3 posOffset = cueBehavior != null ? cueBehavior.positionOffset : Vector3.zero;
                Vector3 rotOffset = cueBehavior != null ? cueBehavior.rotationOffset : Vector3.zero;

                Vector3 lPos = cue.transform.localPosition;
                if (posOffset != Vector3.zero)
                {
                    lPos += posOffset;
                }

                Quaternion lRot = cue.transform.localRotation;
                if (rotOffset != Vector3.zero)
                {
                    lRot = Quaternion.Euler(lRot.eulerAngles + rotOffset);
                }

                suppliedTransform = new MiniTransform(suppliedTransform.pos + (suppliedTransform.rot * lPos), suppliedTransform.rot * lRot);
            }

            this.runtimeTransform = suppliedTransform;

            BroadcastMessageToPlayer(layer, player, runtimeTransform, cueBehavior, Cue.MessageEvent.OnStart);

            InitializeSnap();
        }
Esempio n. 7
0
 public void SetCueBehavior(CueBehavior cueBehavior)
 {
     this.cueBehavior = cueBehavior;
 }
Esempio n. 8
0
        static void BroadcastMessageToPlayer(int layer, EventPlayer player, MiniTransform runtimeTransform, CueBehavior cueBehavior, Cue.MessageEvent messageEvent)
        {
            if (cueBehavior == null)
            {
                return;
            }

            string stepBlock = cueBehavior.messageBlocks[(int)messageEvent];
            string logErrors = "";

            CustomScripting.ExecuteMessageBlock(layer, player, stepBlock, runtimeTransform.pos, ref logErrors);

            if (!logErrors.IsEmpty())
            {
                logErrors = (0, cueBehavior.name + " broadcast message " + messageEvent.ToString()) + logErrors;
                Debug.LogError(logErrors);
            }
        }