public void OnEnterMainState(EnumMainState newStateType) { m_Property.SetIsForceRefreshMotionMode(true); m_Property.GetPreviousState().SetState(m_ServerPreviousState); m_IsChangeMainState = false; SendChangeState(); BehaviorManager.Instance.LogFormat(m_Agent, string.Format($"OnEnterMainState {newStateType}")); //Debug.LogErrorFormat($"OnEnterMainState {newStateType}"); }
public void ChangeMainStateTest(EnumMainState state) { EnumMainState currentMainState = m_Property.GetCurrentState().GetMainState(); m_Property.GetCurrentState().SetMainState(state); ///m_Property.GetPreviousState().SetMainState(currentMainState); ulong mstate = (ulong)currentMainState; m_ServerPreviousState = mstate << 60; m_IsChangeMainState = m_Property.GetCurrentState().GetMainState() != currentMainState; BehaviorManager.Instance.LogFormat(m_Agent, $"OnG2CChangeState PreviousState:{m_Property.GetPreviousState().GetMainState()} currentMainState:{currentMainState} CurrentState:{m_Property.GetCurrentState().GetMainState()}\n"); }
private void OnG2CChangeState(IComponentEvent obj) { G2C_ChangeState g2C_ChangeState = obj as G2C_ChangeState; BehaviorManager.Instance.LogFormat(m_Agent, $"OnG2CChangeState Clinet_PreviousState:{m_Property.GetPreviousState().GetState()} Clinet_PreviousMainState:{m_Property.GetPreviousState().GetMainState()} Client_PreviousSubState:{m_Property.GetPreviousState().GetState()}"); BehaviorManager.Instance.LogFormat(m_Agent, $"OnG2CChangeState Clinet_CurrentState:{m_Property.GetCurrentState().GetState()} Clinet_CurrentMainState:{m_Property.GetCurrentState().GetMainState()} Client_PreviousSubState:{m_Property.GetCurrentState().GetState()}"); ulong currentState = m_Property.GetCurrentState().GetState(); EnumMainState oldMainState = m_Property.GetCurrentState().GetMainState(); EnumMainState newMainState = HeroState.GetMainState(g2C_ChangeState.CurrentState); /// TODO. /// 没有人形态行为树,临时过滤 if ((int)newMainState == 11) { BehaviorManager.Instance.LogFormat(m_Agent, $"Not have human tree, pass behavior logic."); return; } m_Property.GetCurrentState().SetState(g2C_ChangeState.CurrentState); m_ServerPreviousState = g2C_ChangeState.PreviousState; m_IsChangeMainState = oldMainState != newMainState; BehaviorManager.Instance.LogFormat(m_Agent, $"OnG2CChangeState Server_PreviousState:{g2C_ChangeState.PreviousState} Server_PreviousMainState:{HeroState.GetMainState(g2C_ChangeState.PreviousState)} Server_PreviousSubState:{HeroState.GetString(g2C_ChangeState.PreviousState)}"); BehaviorManager.Instance.LogFormat(m_Agent, $"OnG2CChangeState Server_CurrentState:{g2C_ChangeState.CurrentState} Server_CurrentMainState:{HeroState.GetMainState(g2C_ChangeState.CurrentState)} Server_CurrentSubState:{HeroState.GetString(g2C_ChangeState.CurrentState)}"); if (m_IsChangeMainState) { BehaviorManager.Instance.AddSwitchCommandTable(m_Agent, GetTreeRelativePath()); } if (g2C_ChangeState.ExData != null) { if (g2C_ChangeState.ExData.DieExMessage != null && !m_ExDataTable.ContainsKey(ExDataType.DeadUIData)) { m_ExDataTable.Add(ExDataType.DeadUIData, g2C_ChangeState.ExData.DieExMessage); } } SendEvent(ComponentEventName.SpacecraftChangeState, new SpacecraftChangeState() { OldMainState = oldMainState, NewMainState = newMainState }); behaviac.Workspace.Instance.Update(); }
public void OnSpacecraftChangeState(IComponentEvent obj) { if (m_StateAnimator != null) { SpacecraftChangeState state = obj as SpacecraftChangeState; EnumMainState oldMainState = state.OldMainState; EnumMainState newMainState = state.NewMainState; if (oldMainState == EnumMainState.Cruise && newMainState == EnumMainState.Fight) { m_StateAnimator.SetTrigger(Attack.Name); } else if (oldMainState == EnumMainState.Fight && newMainState == EnumMainState.Cruise) { m_StateAnimator.SetTrigger(Normal.Name); } } }
public string GetBehaviorTreeRelativePath(int id, EnumMainState enumMainState) { BehaviorStateClient?behaviorStateClient = m_Config.BehaviorStateClientsByKey((uint)id); Assert.IsTrue(behaviorStateClient.HasValue, "CfgEternityProxy => GetBehaviorTreeRelativePath not exist Id " + id); string path = null; switch (enumMainState) { case EnumMainState.Born: path = behaviorStateClient.Value.BornBehavior; break; case EnumMainState.Cruise: path = behaviorStateClient.Value.CruiseBehavior; break; case EnumMainState.Fight: path = behaviorStateClient.Value.FightBehavior; break; case EnumMainState.Dead: path = behaviorStateClient.Value.DeadBehavior; break; default: Debug.LogErrorFormat($"GetBehaviorTreeRelativePath id={id} enumMainState={enumMainState}"); break; } if (path == null) { Debug.LogErrorFormat($"path == null GetBehaviorTreeRelativePath id={id} enumMainState={enumMainState}"); } return(path); }
private void OnSpacecraftAvatarLoadFinishEvent(IComponentEvent componentEvent) { AvatarLoadFinishEvent spacecraftAvatarLoadFinishEvent = componentEvent as AvatarLoadFinishEvent; m_SpacecraftHnagingPointList = spacecraftAvatarLoadFinishEvent.SpacecraftPresentation; m_Animator = spacecraftAvatarLoadFinishEvent.Animator; Animator[] animators = spacecraftAvatarLoadFinishEvent.Animators; for (int i = 0; i < animators.Length; i++) { // TODO. // 先以命名为规则 if (animators[i].transform.name.Contains("_action")) { m_StateAnimator = animators[i]; AnimationClip[] animationClips = m_StateAnimator.runtimeAnimatorController.animationClips; AnimatorOverrideController animatorOverrideController; animatorOverrideController = new AnimatorOverrideController(m_StateAnimator.runtimeAnimatorController); m_StateAnimator.runtimeAnimatorController = animatorOverrideController; EnumMainState state = m_SpacecraftPlayerAnimatorProperty.GetCurrentState().GetMainState(); if (state == EnumMainState.Fight) { for (int j = 0; j < animationClips.Length; j++) { // TODO. if (animationClips[j].name.Contains("_attacked")) { animatorOverrideController["DefaultState"] = animationClips[j]; break; } } } else { for (int j = 0; j < animationClips.Length; j++) { // TODO. if (animationClips[j].name.Contains("_normal_state")) { animatorOverrideController["DefaultState"] = animationClips[j]; break; } } } break; } } //播放尾焰音效 if (m_SpacecraftPlayerAnimatorProperty != null) { WwiseUtil.PlaySound(m_musicComboID, WwiseMusicSpecialType.SpecialType_WarShipEngine_1, m_IsMain ? WwiseMusicPalce.Palce_1st : WwiseMusicPalce.Palce_3st, false, m_SpacecraftPlayerAnimatorProperty.GetRootTransform()); } if (m_IsMain) { //添加速度线 if (!m_LeapCamera) { m_LeapCamera = EffectManager.GetInstance().CreateEffect( Leyoutech.Core.Loader.Config.AssetAddressKey.FX_SOCKET_FX_CAMERA , EffectManager.GetEffectGroupNameInSpace(m_IsMain) , OnLeapCameraCreated, this); m_LeapCamera.transform.SetParent(m_SpacecraftPlayerAnimatorProperty.GetOwner().GetSkinRootTransform(), false); m_LeapCamera.SetCreateForMainPlayer(m_IsMain); m_LeapCamera.SetAutoRecycleWhenNotExistLivingParticles(false); } m_LeapCamera.PlayFX(); } }
/// <summary> /// 设置基础状态 /// </summary> /// <param name="baseState"></param> public void SetMainState(EnumMainState baseState) { ulong state = (ulong)baseState; m_HeroState = state << SubStateBit; }
public bool CheckMainState(EnumMainState state) { return(state == m_Property.GetCurrentState().GetMainState()); }