private void Refresh(PlayerActor player) { int id = player.CurrentDevicePoint.ID; AgentData agentData = Singleton <Game> .Instance.WorldData.AgentTable[id]; MapUIContainer.SetVisibleHUD(false); AgentActor agentActor = Singleton <Manager.Map> .Instance.AddAgent(id, agentData); agentActor.DisableBehavior(); Actor.BehaviorSchedule schedule = agentActor.Schedule; schedule.enabled = false; agentActor.Schedule = schedule; agentActor.TargetInSightActor = (Actor)null; agentActor.DeactivateNavMeshAgent(); if (Object.op_Inequality((Object)agentActor.CurrentPoint, (Object)null)) { agentActor.CurrentPoint.SetActiveMapItemObjs(true); agentActor.CurrentPoint.ReleaseSlot((Actor)agentActor); agentActor.CurrentPoint = (ActionPoint)null; } agentActor.TargetInSightActionPoint = (ActionPoint)null; player.ChaControl.visibleAll = false; Transform pivotPoint = player.CurrentDevicePoint.PivotPoint; agentActor.Position = pivotPoint.get_position(); agentActor.Rotation = pivotPoint.get_rotation(); agentData.Position = player.CurrentDevicePoint.RecoverPoints[0].get_position(); agentData.Rotation = player.CurrentDevicePoint.RecoverPoints[0].get_rotation(); Animator animator = this._locator = player.CameraControl.EventCameraLocator; ((Component)animator).get_transform().set_position(pivotPoint.get_position()); ((Component)animator).get_transform().set_rotation(pivotPoint.get_rotation()); CommonDefine commonDefine = Singleton <Resources> .Instance.CommonDefine; RuntimeAnimatorController itemAnimator = Singleton <Resources> .Instance.Animation.GetItemAnimator(commonDefine.ItemAnims.AppearCameraAnimatorID); animator.set_runtimeAnimatorController(itemAnimator); ((Component)animator).get_transform().set_position(pivotPoint.get_position()); ((Component)animator).get_transform().set_rotation(pivotPoint.get_rotation()); animator.set_speed(0.0f); animator.Play(commonDefine.AppearCameraInStates[agentActor.ChaControl.fileParam.personality][0]); this._eventCamera = ((Component)player.CameraControl.EventCamera).get_transform(); ((Component)this._eventCamera).get_transform().SetParent(player.CameraControl.EventCameraParent, false); ((Component)this._eventCamera).get_transform().set_localPosition(Vector3.get_zero()); ((Component)this._eventCamera).get_transform().set_localRotation(Quaternion.Euler(0.0f, 180f, 0.0f)); player.SetActiveOnEquipedItem(false); player.CameraControl.Mode = CameraMode.Event; Transform playerRecoverPoint = player.CurrentDevicePoint.PlayerRecoverPoint; if (Object.op_Inequality((Object)playerRecoverPoint, (Object)null)) { player.NavMeshAgent.Warp(playerRecoverPoint.get_position()); player.Rotation = playerRecoverPoint.get_rotation(); } this._agent = agentActor; Resources.UnloadUnusedAssets(); GC.Collect(); }
private void ChangeForceBehavior(AgentActor agent, Desire.ActionType actionType) { AgentActor agentActor1 = agent; int num1 = -1; agent.PoseID = num1; int num2 = num1; agentActor1.ActionID = num2; agent.AgentData.CarryingItem = (StuffItem)null; agent.StateType = AIProject.Definitions.State.Type.Normal; if (Object.op_Inequality((Object)agent.CurrentPoint, (Object)null)) { agent.CurrentPoint.SetActiveMapItemObjs(true); agent.CurrentPoint.ReleaseSlot((Actor)agent); agent.CurrentPoint = (ActionPoint)null; } if (Object.op_Inequality((Object)agent.CommandPartner, (Object)null)) { Actor commandPartner = agent.CommandPartner; switch (commandPartner) { case AgentActor _: AgentActor agentActor2 = commandPartner as AgentActor; agentActor2.CommandPartner = (Actor)null; agentActor2.ChangeBehavior(Desire.ActionType.Normal); break; case MerchantActor _: MerchantActor merchantActor = commandPartner as MerchantActor; merchantActor.CommandPartner = (Actor)null; merchantActor.ChangeBehavior(merchantActor.LastNormalMode); break; } agent.CommandPartner = (Actor)null; } agent.EventKey = (AIProject.EventType) 0; agent.CommandPartner = (Actor)null; agent.ResetActionFlag(); if (agent.Schedule.enabled) { Actor.BehaviorSchedule schedule = agent.Schedule; schedule.enabled = false; agent.Schedule = schedule; } agent.ClearItems(); agent.ClearParticles(); agent.ActivateNavMeshAgent(); agent.ActivateTransfer(true); agent.Animation.ResetDefaultAnimatorController(); agent.ChangeBehavior(actionType); }
private void Refresh(PlayerActor player) { ChaFileControl chaFileControl = new ChaFileControl(); int id = player.CurrentDevicePoint.ID; int num = 0; foreach (KeyValuePair <int, string> changedCharaFile in Singleton <Manager.Map> .Instance.ChangedCharaFiles) { string str = changedCharaFile.Value; AgentData agentData = Singleton <Game> .Instance.WorldData.AgentTable[changedCharaFile.Key]; if (agentData.ParameterLock) { agentData.ParameterLock = false; } bool flag = !str.IsNullOrEmpty() && Manager.Config.GraphicData.CharasEntry[changedCharaFile.Key] && chaFileControl.LoadCharaFile(str, (byte)1, false, true) && agentData.MapID == Singleton <Manager.Map> .Instance.MapID; AgentActor agent; if (Singleton <Manager.Map> .Instance.AgentTable.TryGetValue(changedCharaFile.Key, ref agent)) { agent.DisableBehavior(); agent.ClearItems(); agent.ClearParticles(); Actor.BehaviorSchedule schedule = agent.Schedule; schedule.enabled = false; agent.Schedule = schedule; agent.TargetInSightActor = (Actor)null; if (Object.op_Inequality((Object)agent.CurrentPoint, (Object)null)) { agent.CurrentPoint.SetActiveMapItemObjs(true); agent.CurrentPoint.ReleaseSlot((Actor)agent); agent.CurrentPoint = (ActionPoint)null; } agent.TargetInSightActionPoint = (ActionPoint)null; if (Object.op_Inequality((Object)agent.Partner, (Object)null)) { if (agent.Partner is PlayerActor) { (agent.Partner as PlayerActor).PlayerController.ChangeState("Normal"); } else if (agent.Partner is AgentActor) { AgentActor partner = agent.Partner as AgentActor; agent.StopLesbianSequence(); partner.StopLesbianSequence(); partner.Animation.EndIgnoreEvent(); Singleton <Game> .Instance.GetExpression(partner.ChaControl.fileParam.personality, "標準")?.Change(partner.ChaControl); partner.Animation.ResetDefaultAnimatorController(); partner.ChangeBehavior(Desire.ActionType.Normal); } else if (agent.Partner is MerchantActor) { MerchantActor partner = agent.Partner as MerchantActor; agent.StopLesbianSequence(); partner.ResetState(); partner.ChangeBehavior(partner.LastNormalMode); } agent.Partner = (Actor)null; } if (Object.op_Inequality((Object)agent.CommandPartner, (Object)null)) { if (agent.CommandPartner is AgentActor) { (agent.CommandPartner as AgentActor).ChangeBehavior(Desire.ActionType.Normal); } else if (agent.CommandPartner is MerchantActor) { MerchantActor commandPartner = agent.CommandPartner as MerchantActor; commandPartner.ChangeBehavior(commandPartner.LastNormalMode); } agent.CommandPartner = (Actor)null; } Singleton <Manager.Map> .Instance.RemoveAgent(agent); if (flag) { agent = Singleton <Manager.Map> .Instance.AddAgent(changedCharaFile.Key, agentData); agentData.PrevMapID = new int?(); } else { agent = (AgentActor)null; } } else if (flag) { agent = Singleton <Manager.Map> .Instance.AddAgent(changedCharaFile.Key, agentData); agentData.PrevMapID = new int?(); } else { agent = (AgentActor)null; } if (Object.op_Inequality((Object)agent, (Object)null)) { agent.RefreshWalkStatus(Singleton <Manager.Map> .Instance.PointAgent.Waypoints); Singleton <Manager.Map> .Instance.InitSearchActorTargets(agent); player.PlayerController.CommandArea.AddCommandableObject((ICommandable)agent); using (IEnumerator <KeyValuePair <int, AgentActor> > enumerator = Singleton <Manager.Map> .Instance.AgentTable.GetEnumerator()) { while (enumerator.MoveNext()) { KeyValuePair <int, AgentActor> current = enumerator.Current; if (!Object.op_Equality((Object)current.Value, (Object)agent)) { current.Value.AddActor((Actor)agent); } } } agent.ActivateNavMeshAgent(); Transform recoverPoint = player.CurrentDevicePoint.RecoverPoints[num++]; agent.NavMeshAgent.Warp(recoverPoint.get_position()); agent.Rotation = recoverPoint.get_rotation(); agent.EnableBehavior(); agent.ChangeBehavior(Desire.ActionType.Normal); } } Resources.UnloadUnusedAssets(); GC.Collect(); }