コード例 #1
0
        public void PlayEvents(string reason, string eventsHolder, MiniTransform transforms, Event[] events, int layer, float overrideDuration, bool asInterrupter)
        {
            if (!ChcekLinkedPlayers())
            {
                return;
            }

            // Debug.Log("playing events from  " + eventsHolder + " on layer " + layer + " context: " + reason);

            GetUpdateLayer(layer).PlayEvents(eventsHolder, transforms, this, pack2playEvents, paramDict, events, overrideDuration, asInterrupter);
        }
コード例 #2
0
        public static void InitializePerformance(string debugReason, CueBehavior[] playlists, EventPlayer[] players, bool looped, int playerLayer, MiniTransform transforms, bool forceInterrupt = true, Action[] onEndPerformanceCallbacks = null)
        {
            if (!CheckChannelCounts(playlists.Length, players.Length))
            {
                return;
            }
            Playlists.Performance.playlistPerformances.GetNewPerformance().InitializePerformance(
                true,

                debugReason,
                playerLayer,
                playlists.Generate(p => new Channel(p)).ToArray(),
                players,
                transforms,
                looped,
                forceInterrupt,
                onEndPerformanceCallbacks
                );
        }
コード例 #3
0
 public static void InitializePerformance(string debugReason, CueBehavior playlists, EventPlayer players, bool looped, int playerLayer, MiniTransform transforms, bool forceInterrupt = true, Action onEndPerformanceCallbacks = null)
 {
     InitializePerformance(debugReason, new CueBehavior[] { playlists }, new EventPlayer[] { players }, looped, playerLayer, transforms, forceInterrupt, new Action[] { onEndPerformanceCallbacks });
 }
コード例 #4
0
 public static void InitializePerformance(string debugReason, Event[] events, EventPlayer player, bool looped, int playerLayer, MiniTransform transforms, bool forceInterrupt = true, Action[] onEndPerformanceCallbacks = null)
 {
     Playlists.Performance.playlistPerformances.GetNewPerformance().InitializePerformance(
         true,
         debugReason,
         playerLayer,
         new Channel[] { new Channel(events) },
         new EventPlayer[] { player },
         transforms,
         looped,
         forceInterrupt,
         onEndPerformanceCallbacks
         );
 }
コード例 #5
0
 /*
  *  called when the attached event player plays an
  *  event with the pack name this ocmponent uses
  *  and chooses an appropriate asset object
  *
  *  endUseCallbacks should be called whenever the animation is done
  */
 protected abstract void UseAssetObject(AssetObject ao, bool asInterrupter, MiniTransform transforms, HashSet <System.Action> endUse);
コード例 #6
0
            bool PlayEvent(
                MiniTransform transforms,
                EventPlayer myPlayer,
                Dictionary <int, PlayerMessage> pack2playEvents,
                Dictionary <string, CustomParameter> paramDict,
                Event e, bool isMainEvent, bool asInterrupter, bool endAfterDuration)
            {
                int packID = e.mainPackID;

                if (skipPlays.Contains(packID))
                {
                    return(false);
                }


                EventResponse eventResponse = new EventResponse();//skipPlays);

                e.GetParamFilteredObjects(paramDict, eventResponse);

                eventResponse.LogErrors();
                eventResponse.LogWarnings();

                // bool mainFound = !eventResponse.noMainFound;

                // foreach (var k in eventResponse.objectsPerPack.Keys) {

                // bool isMainPack = k == e.mainPackID;


                // List<AssetObject> list = eventResponse.objectsPerPack[k];
                List <AssetObject> list = eventResponse.chosenObjects;


                if (list.Count > 0)
                {
                    AssetObject o = list.RandomChoice();

                    if (!endAfterDuration)
                    {
                        // if (isMainPack && isMainEvent) {
                        if (isMainEvent)
                        {
                            SetDuration(o["Duration"].GetValue <float>());


                            // current_duration = o["Duration"].GetValue<float>();
                        }
                    }

                    HashSet <Action> endUseSuccessCBs = new HashSet <Action>();

                    if (!endAfterDuration)
                    {
                        //give control to object when it's the main event
                        //and when the duration is < 0 and not overriden

                        // if (isMainEvent && isMainPack) {
                        if (isMainEvent)
                        {
                            endUseSuccessCBs.Add(() => { EndPlayAttempt(true, "controlled"); });
                        }
                    }

                    string logErrors = "";
                    CustomScripting.ExecuteMessageBlock(myLayer, myPlayer, o.messageBlock, Vector3.zero, ref logErrors);

                    if (!logErrors.IsEmpty())
                    {
                        logErrors = "Broadcast message from asset object: " + o.objRef.name + "\n" + logErrors;
                        Debug.LogError(logErrors);
                    }

                    int k = packID;

                    if (!pack2playEvents.ContainsKey(k))
                    {
                        Debug.LogError("skipping " + PacksManager.ID2Name(k) + " not connected to player");
                        return(false);
                    }

                    pack2playEvents[k](o, asInterrupter, transforms, endUseSuccessCBs);
                }


                return(list.Count > 0);// mainFound;
            }
コード例 #7
0
            public void PlayEvents(
                string eventsHolder,
                MiniTransform transforms, EventPlayer myPlayer,
                Dictionary <int, PlayerMessage> pack2playEvents,
                Dictionary <string, CustomParameter> paramDict,
                Event[] events, float overrideDuration, bool asInterrupter
                )
            {
                //Debug.Log("playing cue");

                playing = true;

                duration_timer = 0;

                SetDuration(overrideDuration);
                // if (current_duration >= 0) Debug.Log("set current duration to :: " + current_duration);

                bool endAfterDuration = current_duration >= 0;
                // bool endPlayAttemptHandled = current_duration >= 0;// || endPlayOverriden;

                int l = 0;

                if (events != null)
                {
                    l = events.Length;
                }

                bool successPlay = true;

                if (events != null)
                {
                    bool isMainEvent = true;
                    foreach (var e in events)
                    {
                        bool success = PlayEvent(transforms, myPlayer, pack2playEvents, paramDict, e, isMainEvent, asInterrupter, endAfterDuration);

                        if (isMainEvent && !success)
                        {
                            successPlay = false;
                        }
                        isMainEvent = false;
                    }
                }

                skipPlays.Clear();

                if (!successPlay)
                {
                    if (current_duration < 0)
                    {
                        // Debug.Log("not succes end " + eventsHolder);
                        EndPlayAttempt(false, " coulnt find any");
                    }
                }
                else
                {
                    if (l == 0 && !endAfterDuration) // !endPlayAttemptHandled) {
                    //if (endPlayOverriden) Debug.Log("reason " + endPlayOverrideReason);
                    // Debug.Log("zero events not event handled early out " + eventsHolder);
                    {
                        EndPlayAttempt(true, "no events specified");
                    }
                }
            }