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); }
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; } }
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); })); }
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)); }