public virtual void OnStart()
        {
            AgentActor agent = this.Agent;

            agent.EventKey = EventType.Play;
            ((Task)this).OnStart();
            agent.SetActiveOnEquipedItem(false);
            agent.ChaControl.setAllLayerWeight(0.0f);
            agent.ElectNextPoint();
            List <PoseKeyPair> poseKeyPairList = ListPool <PoseKeyPair> .Get();

            AgentProfile.PoseIDCollection poseIdTable = Singleton <Resources> .Instance.AgentProfile.PoseIDTable;
            poseKeyPairList.AddRange((IEnumerable <PoseKeyPair>)poseIdTable.PlayGameStandIDList);
            Weather weather = Singleton <Manager.Map> .Instance.Simulator.Weather;

            if (agent.AreaType == MapArea.AreaType.Normal)
            {
                poseKeyPairList.AddRange((IEnumerable <PoseKeyPair>)Singleton <Resources> .Instance.AgentProfile.PoseIDTable.PlayGameStandOutdoorIDList);
                if (weather == Weather.Cloud1 || weather == Weather.Cloud2)
                {
                    poseKeyPairList.Add(Singleton <Resources> .Instance.AgentProfile.PoseIDTable.ClearPoseID);
                }
            }
            PoseKeyPair element = poseKeyPairList.GetElement <PoseKeyPair>(Random.Range(0, poseKeyPairList.Count));

            ListPool <PoseKeyPair> .Release(poseKeyPairList);

            agent.ActionID = element.postureID;
            agent.ActionID = element.poseID;
            PlayState info = Singleton <Resources> .Instance.Animation.AgentActionAnimTable[element.postureID][element.poseID];

            agent.Animation.RecoveryPoint = (Transform)null;
            ActorAnimInfo animInfo = agent.Animation.LoadActionState(element.postureID, element.poseID, info);

            agent.LoadActionFlag(element.postureID, element.poseID);
            agent.StopNavMeshAgent();
            agent.ChangeStaticNavMeshAgentAvoidance();
            agent.Animation.StopAllAnimCoroutine();
            agent.Animation.PlayInAnimation(animInfo.inEnableBlend, animInfo.inBlendSec, info.MainStateInfo.FadeOutTime, animInfo.layer);
            this._onEndActionDisposable = ObservableExtensions.Subscribe <Unit>(Observable.Take <Unit>((IObservable <M0>)agent.AnimationAgent.OnEndActionAsObservable(), 1), (System.Action <M0>)(_ => agent.Animation.PlayOutAnimation(animInfo.outEnableBlend, animInfo.outBlendSec, animInfo.layer)));
            if (animInfo.hasAction)
            {
                this._onActionPlayDisposable = ObservableExtensions.Subscribe <Unit>((IObservable <M0>)agent.AnimationAgent.OnActionPlayAsObservable(), (System.Action <M0>)(_ => agent.Animation.PlayActionAnimation(animInfo.layer)));
            }
            this._onCompleteActionDisposable = ObservableExtensions.Subscribe <Unit>((IObservable <M0>)agent.AnimationAgent.OnCompleteActionAsObservable(), (System.Action <M0>)(_ => this.Complete()));
            if (!animInfo.isLoop)
            {
                return;
            }
            agent.SetCurrentSchedule(animInfo.isLoop, "その場で遊ぶ", animInfo.loopMinTime, animInfo.loopMaxTime, animInfo.hasAction, false);
        }
Example #2
0
        public override void OnStart()
        {
            AgentActor agent = this.Agent;

            agent.EventKey = EventType.Toilet;
            base.OnStart();
            AgentProfile.PoseIDCollection poseIdTable = Singleton <Resources> .Instance.AgentProfile.PoseIDTable;
            switch (agent.HPositionSubID)
            {
            case 3:
                agent.SurprisePoseID = new PoseKeyPair?(poseIdTable.SurpriseInToiletSitID);
                break;

            case 5:
                agent.SurprisePoseID = new PoseKeyPair?(poseIdTable.SurpriseInToiletSquatID);
                break;
            }
        }
Example #3
0
        public virtual void OnStart()
        {
            AgentActor agent = this.Agent;

            if (agent.EquipedItem != null)
            {
                ItemCache equipedItem = agent.EquipedItem;
                if (equipedItem.EventItemID == Singleton <Resources> .Instance.LocomotionProfile.ObonEventItemID)
                {
                    return;
                }
                ItemIDKeyPair      umbrellaId         = Singleton <Resources> .Instance.CommonDefine.ItemIDDefine.UmbrellaID;
                EquipEventItemInfo equipEventItemInfo = Singleton <Resources> .Instance.GameInfo.CommonEquipEventItemTable[umbrellaId.categoryID][umbrellaId.itemID];
                if (equipedItem.EventItemID == equipEventItemInfo.EventItemID)
                {
                    return;
                }
            }
            ((Task)this).OnStart();
            agent.StopNavMeshAgent();
            agent.ChangeStaticNavMeshAgentAvoidance();
            int id = agent.AgentData.SickState.ID;

            this._info = (PlayState)null;
            Dictionary <int, Dictionary <int, PlayState> > agentActionAnimTable = Singleton <Resources> .Instance.Animation.AgentActionAnimTable;

            AgentProfile.PoseIDCollection poseIdTable = Singleton <Resources> .Instance.AgentProfile.PoseIDTable;
            PoseKeyPair?nullable = new PoseKeyPair?();

            switch (id)
            {
            case 0:
                nullable = new PoseKeyPair?(poseIdTable.CoughID);
                break;

            case 4:
                nullable = new PoseKeyPair?(poseIdTable.StandHurtID);
                break;

            default:
                if ((double)agent.AgentData.StatsTable[2] <= 0.0)
                {
                    nullable = new PoseKeyPair?(poseIdTable.StandHurtID);
                    break;
                }
                switch (Singleton <Manager.Map> .Instance.Simulator.Temperature)
                {
                case Temperature.Hot:
                    nullable = new PoseKeyPair?(poseIdTable.ColdPoseID);
                    break;

                case Temperature.Cold:
                    nullable = new PoseKeyPair?(poseIdTable.ColdPoseID);
                    break;
                }
                break;
            }
            if (!nullable.HasValue)
            {
                return;
            }
            this._info = agentActionAnimTable[nullable.Value.postureID][nullable.Value.poseID];
            if (this._info == null)
            {
                return;
            }
            agent.Animation.LoadEventKeyTable(nullable.Value.postureID, nullable.Value.poseID);
            this._layer        = this._info.Layer;
            this._inEnableFade = this._info.MainStateInfo.InStateInfo.EnableFade;
            this._inFadeTime   = this._info.MainStateInfo.InStateInfo.FadeSecond;
            agent.Animation.OnceActionStates.Clear();
            if (!this._info.MainStateInfo.InStateInfo.StateInfos.IsNullOrEmpty <PlayState.Info>())
            {
                foreach (PlayState.Info stateInfo in this._info.MainStateInfo.InStateInfo.StateInfos)
                {
                    agent.Animation.OnceActionStates.Add(stateInfo);
                }
            }
            agent.Animation.OutStates.Clear();
            if (!this._info.MainStateInfo.OutStateInfo.StateInfos.IsNullOrEmpty <PlayState.Info>())
            {
                foreach (PlayState.Info stateInfo in this._info.MainStateInfo.OutStateInfo.StateInfos)
                {
                    agent.Animation.OutStates.Enqueue(stateInfo);
                }
            }
            agent.Animation.PlayOnceActionAnimation(this._inEnableFade, this._inFadeTime, this._layer);
            this._onEndActionDisposable = ObservableExtensions.Subscribe <Unit>(Observable.Take <Unit>((IObservable <M0>) this._onEndAction, 1), (Action <M0>)(_ =>
            {
                agent.Animation.StopAllAnimCoroutine();
                agent.Animation.PlayOutAnimation(this._outEnableFade, this._outFadeTime, this._layer);
            }));
        }
Example #4
0
        public virtual void OnStart()
        {
            ((Task)this).OnStart();
            this.Agent.StopNavMeshAgent();
            this.Agent.AnimalFovAngleOffsetY = 0.0f;
            int       id         = this.Agent.AgentData.SickState.ID;
            PlayState playState1 = new PlayState();
            Dictionary <int, Dictionary <int, PlayState> > agentActionAnimTable = Singleton <Resources> .Instance.Animation.AgentActionAnimTable;

            AgentProfile.PoseIDCollection poseIdTable = Singleton <Resources> .Instance.AgentProfile.PoseIDTable;
            this.isSick = -1 < id;
            this.isCold = false;
            PlayState playState2;

            if (this.isSick)
            {
                if (id == 0)
                {
                    this.isCold = true;
                    PoseKeyPair coughId = poseIdTable.CoughID;
                    playState2 = agentActionAnimTable[coughId.postureID][coughId.poseID];
                }
                else
                {
                    PoseKeyPair[] normalIdList = poseIdTable.NormalIDList;
                    PoseKeyPair   element      = normalIdList.GetElement <PoseKeyPair>(Random.Range(0, normalIdList.Length));
                    playState2 = agentActionAnimTable[element.postureID][element.poseID];
                }
            }
            else
            {
                List <PoseKeyPair> poseKeyPairList = ListPool <PoseKeyPair> .Get();

                poseKeyPairList.AddRange((IEnumerable <PoseKeyPair>)poseIdTable.NormalIDList);
                switch (Singleton <Manager.Map> .Instance.Simulator.Weather)
                {
                case Weather.Clear:
                case Weather.Cloud1:
                    poseKeyPairList.Add(poseIdTable.ClearPoseID);
                    break;
                }
                PoseKeyPair element = poseKeyPairList.GetElement <PoseKeyPair>(Random.Range(0, poseKeyPairList.Count));
                ListPool <PoseKeyPair> .Release(poseKeyPairList);

                playState2 = agentActionAnimTable[element.postureID][element.poseID];
            }
            this.layer        = playState2.Layer;
            this.inEnableFade = playState2.MainStateInfo.InStateInfo.EnableFade;
            this.inFadeTime   = playState2.MainStateInfo.InStateInfo.FadeSecond;
            this.Agent.Animation.OnceActionStates.Clear();
            if (!playState2.MainStateInfo.InStateInfo.StateInfos.IsNullOrEmpty <PlayState.Info>())
            {
                foreach (PlayState.Info stateInfo in playState2.MainStateInfo.InStateInfo.StateInfos)
                {
                    this.Agent.Animation.OnceActionStates.Add(stateInfo);
                }
            }
            this.Agent.Animation.OutStates.Clear();
            if (!playState2.MainStateInfo.OutStateInfo.StateInfos.IsNullOrEmpty <PlayState.Info>())
            {
                foreach (PlayState.Info stateInfo in playState2.MainStateInfo.OutStateInfo.StateInfos)
                {
                    this.Agent.Animation.OutStates.Enqueue(stateInfo);
                }
            }
            this.duration   = Singleton <Resources> .Instance.AgentProfile.StandDurationMinMax.RandomValue;
            this.onEndEvent = new Subject <Unit>();
            ObservableExtensions.Subscribe <Unit>(Observable.Take <Unit>((IObservable <M0>) this.onEndEvent, 1), (Action <M0>)(_ => this.Agent.Animation.PlayOutAnimation(this.outEnableFade, this.outFadeTime, this.layer)));
            this.onStartEvent = (Action)(() => this.Agent.Animation.PlayOnceActionAnimation(this.inEnableFade, this.inFadeTime, this.layer));
        }