#pragma warning restore 0649 #endregion #region Base - Override public override bool PassCondition(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { if (!PassAllCondition(hActorData, lstBehaviourData)) { return(false); } return(m_bIsHolding == FlagUtility.HasFlagUnsafe(hActorData.m_hInputData.m_eHoldingInput, m_eInput)); }
#pragma warning restore 0649 #endregion #region Base - Override public override bool PassCondition(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { if (!PassAllCondition(hActorData, lstBehaviourData)) { return(false); } return(m_bIsTrue == FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.IsGrounding)); }
#pragma warning restore 0649 #endregion #endregion #region Base - Override public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnCreateBehaviour(hActorData, lstBehaviourData); lstBehaviourData.Add(new DoCollisionDamageCacheData { m_actOnTriggerEnter = TriggerEnter, }); }
public override void OnStopBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { if (lstBehaviourData.TryGetData(out DoCollisionDamageCacheData hOutData)) { hActorData.m_hTriggerEventCallback.Remove(PhysicEventType.Enter, hOutData.m_actOnTriggerEnter); } base.OnStopBehaviour(hActorData, lstBehaviourData); }
public override void OnStopBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { if (lstBehaviourData.TryGetData(out DoubleJumpCacheData hOutData)) { hActorData.m_hInputData.m_hInputCallback.Remove((InputEventType.Jump, GetInputType.Down), hOutData.m_actJump); } base.OnStopBehaviour(hActorData, lstBehaviourData); }
public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnCreateBehaviour(hActorData, lstBehaviourData); lstBehaviourData.Add(new DoubleJumpCacheData { m_actJump = OnJump }); }
#pragma warning restore 0649 #endregion #region Base - Override public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnCreateBehaviour(hActorData, lstBehaviourData); lstBehaviourData.Add(new GroundPoundCacheData { m_actDownAttack = OnDownAttack }); }
#pragma warning restore 0649 #endregion #region Variable - Property #endregion #endregion #region Main public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnCreateBehaviour(hActorData, lstBehaviourData); lstBehaviourData.Add(new MoveCacheData { m_nNextPointIndex = -2 }); }
public override void OnStopBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { if (lstBehaviourData.TryGetDataRW(out GroundPoundCacheData hOutData)) { hActorData.m_hInputData.m_hInputCallback.Remove((InputEventType.Attack, GetInputType.Down), hOutData.m_actDownAttack); } base.OnStopBehaviour(hActorData, lstBehaviourData); }
public override void OnStartBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnStartBehaviour(hActorData, lstBehaviourData); if (lstBehaviourData.TryGetDataRW(out AttackCacheData hOutData)) { hActorData.m_hInputData.m_hInputCallback.Add((InputEventType.Attack, GetInputType.Down), hOutData.m_actAttack); } }
#pragma warning restore 0649 #endregion #region Base - Override public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnCreateBehaviour(hActorData, lstBehaviourData); lstBehaviourData.Add(new WallJumpCacheData { m_actJump = OnWallJump, m_fWallJumpLastTime = -100, }); }
#pragma warning restore 0649 #endregion #endregion #region Base - Override public override void OnCreateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnCreateBehaviour(hActorData, lstBehaviourData); lstBehaviourData.Add(new AttackCacheData { m_actAttack = OnAttack, m_fAttackLastTime = -100, }); }
#pragma warning restore 0649 #endregion #region Base - Override public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnUpdateBehaviour(hActorData, lstBehaviourData); if ((hActorData.m_hInputData.m_fHorizontal > 0 && !FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.FacingRight)) || (hActorData.m_hInputData.m_fHorizontal < 0 && FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.FacingRight))) { var hController = (DSC_ActorController)hActorData.m_hController; hController.Flip(); } }
protected virtual void StartAttack(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData, int nAttack) { if (lstBehaviourData.TryGetData(out ActorMonoData <Actor_EventController> hEventController)) { hEventController.m_hMono.RunEvent(m_arrAttackData[nAttack].m_nEventIndex); } hActorData.m_hAiData.m_fPatternLastTime = Time.time; hActorData.m_hAiData.m_fPatternEndCoolDown = m_arrAttackData[nAttack].m_fAttackEndDelay; hActorData.m_hAiData.m_bPatterning = true; }
#pragma warning restore 0649 #endregion #region Variable - Property #endregion #endregion #region Base - Override public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnUpdateBehaviour(hActorData, lstBehaviourData); var hPlayer = Global_GameplayManager.playerController; if (hPlayer == null) { return; } Vector2 vPlayerPos = hPlayer.actorData.m_hActor.position; Vector2 vOwnPos = hActorData.m_hActor.position; if (FlagUtility.HasFlagUnsafe(m_eSearhType, SearchType.X)) { if (vPlayerPos.x > vOwnPos.x && !FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.FacingRight) || vPlayerPos.x < vOwnPos.x && FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.FacingRight)) { goto NotFound; } float fDistanceX = Mathf.Abs(vPlayerPos.x - vOwnPos.x); if (fDistanceX > m_fSightXRange) { goto NotFound; } } if (FlagUtility.HasFlagUnsafe(m_eSearhType, SearchType.Y)) { float fDistanceY = Mathf.Abs(vPlayerPos.y - vOwnPos.y); if (fDistanceY > m_fSightYRange) { goto NotFound; } } if (FlagUtility.HasFlagUnsafe(m_eSearhType, SearchType.Angle)) { if (Vector2.Angle(vOwnPos, vPlayerPos) > m_fSightAngle) { goto NotFound; } } FoundPlayer(hActorData, lstBehaviourData); return; NotFound: NotFoundPlayer(hActorData, lstBehaviourData); ; }
public override void OnFixedUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnFixedUpdateBehaviour(hActorData, lstBehaviourData); if (hActorData.m_hRigid) { if (FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.GroundPoundCasting)) { hActorData.m_hRigid.velocity = Vector2.zero; } } }
protected virtual void OnGravityIncrease(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { if (hActorData.m_hRigid == null || FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.HoldingJump)) { return; } Vector2 vVelocity = hActorData.m_hRigid.velocity; vVelocity.y += Physics2D.gravity.y * hActorData.m_hRigid.gravityScale * m_fGravityMultiplier * Time.deltaTime; hActorData.m_hRigid.velocity = vVelocity; }
public override void OnDestroyBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnDestroyBehaviour(hActorData, lstBehaviourData); if (!HasBehaviourInArray()) { return; } for (int i = 0; i < m_arrBehaviour.Length; i++) { m_arrBehaviour[i]?.OnDestroyBehaviour(hActorData, lstBehaviourData); } }
#pragma warning restore 0649 #endregion #region Base - Override public override bool PassCondition(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { if (!PassAllCondition(hActorData, lstBehaviourData)) { return(false); } if (hActorData.m_hRigid == null) { return(true); } Vector2 vVelocity = hActorData.m_hRigid.velocity; return(CheckVelocityX(vVelocity) && CheckVelocityY(vVelocity)); }
public override void OnLateUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnLateUpdateBehaviour(hActorData, lstBehaviourData); if (!HasBehaviourInArray()) { return; } for (int i = 0; i < m_arrBehaviour.Length; i++) { var hBehaviour = m_arrBehaviour[i]; if (hBehaviour != null && hBehaviour.isRunning) { hBehaviour.OnLateUpdateBehaviour(hActorData, lstBehaviourData); } } }
#pragma warning restore 0649 #endregion #region Variable - Property #endregion #endregion #region Base - Override public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnUpdateBehaviour(hActorData, lstBehaviourData); if (hActorData.m_hAiData.m_bPatterning) { return; } if (m_arrAttackData == null || m_arrAttackData.Length <= 0) { return; } int nAttack = Random.Range(0, m_arrAttackData.Length); StartAttack(hActorData, lstBehaviourData, nAttack); }
protected virtual void StartAttack(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData, AttackCacheData hData) { var hPlayer = Global_GameplayManager.playerController; if (hPlayer == null) { return; } hData.m_vAttackStartPos = hActorData.m_hActor.position; hData.m_vAttackDestination = hPlayer.actorData.m_hActor.position; hData.m_vControlPoint = hData.m_vAttackStartPos + (hData.m_vAttackDestination - hData.m_vAttackStartPos) / 2 + Vector2.down * 2.0f; hData.m_fAttackStartTime = Time.time; hData.m_fAttackDuration = (Vector2.Distance(hData.m_vAttackStartPos, hData.m_vAttackDestination) / (hActorData.m_hStatus.status.m_fMoveSpeed * 2)); hData.m_bAttacking = true; }
public override void OnStopBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { if (!isRunning) { return; } isRunning = false; if (!HasBehaviourInArray()) { return; } for (int i = 0; i < m_arrBehaviour.Length; i++) { m_arrBehaviour[i]?.OnStopBehaviour(hActorData, lstBehaviourData); } }
public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnUpdateBehaviour(hActorData, lstBehaviourData); if (!FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.WallJumping)) { return; } if (!lstBehaviourData.TryGetDataRW(out WallJumpCacheData hData)) { return; } if (Time.time >= hData.m_fWallJumpLastTime + m_fWallJumpDuration) { hActorData.m_eStateFlag &= ~ActorStateFlag.WallJumping; } }
public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnUpdateBehaviour(hActorData, lstBehaviourData); if (!HasBehaviourInArray()) { return; } for (int i = 0; i < m_arrBehaviour.Length; i++) { var hBehaviour = m_arrBehaviour[i]; if (hBehaviour == null) { continue; } bool bRunning = false; if (hBehaviour.isRunning) { if (!hBehaviour.PassCondition(hActorData, lstBehaviourData)) { hBehaviour.OnStopBehaviour(hActorData, lstBehaviourData); } else { isRunning = true; } } else if (hBehaviour.PassCondition(hActorData, lstBehaviourData)) { hBehaviour.OnStartBehaviour(hActorData, lstBehaviourData); isRunning = true; } if (bRunning) { hBehaviour.OnUpdateBehaviour(hActorData, lstBehaviourData); } } }
public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnUpdateBehaviour(hActorData, lstBehaviourData); if (!lstBehaviourData.TryGetDataRW(out GroundPoundCacheData hData)) { return; } if (hActorData.m_hRigid) { if (FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.GroundPoundCasting)) { if (Time.time >= hData.m_fGroundPoundStartTime + m_fCastingTime) { hActorData.m_eStateFlag &= ~ActorStateFlag.GroundPoundCasting; GroundPound(hActorData, lstBehaviourData); } } } }
protected virtual void OnDownAttack(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { if (hActorData.m_hInputData.m_fVertical >= 0 || hActorData.m_hRigid == null || hActorData.m_hStatus == null || FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.GroundPoundCasting) || FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.GroundPounding) || !lstBehaviourData.TryGetDataRW(out GroundPoundCacheData hData)) { return; } hActorData.m_eStateFlag |= ActorStateFlag.GroundPoundCasting; hActorData.m_hRigid.velocity = Vector2.zero; hData.m_fGroundPoundStartTime = Time.time; if (hActorData.m_hAnimation) { hActorData.m_hAnimation.m_hSpineAnimationState.SetAnimation(0, hActorData.m_hAnimation.m_sGroundPoundCastingAnimation, false); } }
protected virtual void TriggerEnter(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData, Collider2D hCollider) { if (!hCollider.gameObject.CompareTag(TagUtility.Name.player)) { return; } var hTargetActor = hCollider.GetComponent <DSC_ActorController>(); if (hTargetActor && FlagUtility.HasFlagUnsafe(hTargetActor.actorData.m_eStateFlag, ActorStateFlag.IsDamage)) { return; } var hDamageable = hCollider.gameObject.GetComponent <IDamageable>(); if (hDamageable != null) { hDamageable.DoDamage(Mathf.RoundToInt(hActorData.m_hStatus.status.m_nAttack * m_fDamageMultiplier), hActorData.m_hActor.position); } }
#pragma warning disable 0649 #pragma warning restore 0649 #endregion #region Variable - Property #endregion #endregion #region Base - Override public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnUpdateBehaviour(hActorData, lstBehaviourData); if (hActorData.m_hAnimation == null || hActorData.m_hRigid == null) { return; } var hAnim = hActorData.m_hAnimation.m_hSpineAnimationState; var vVelocity = hActorData.m_hRigid.velocity; if (hActorData.m_eCurrentAnimation == ActorAnimation.Airing) { if (vVelocity.y <= 0 && FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.IsGrounding) && !FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.Jumping)) { hAnim.SetAnimation(0, hActorData.m_hAnimation.m_sLandingAnimation, false); hAnim.AddAnimation(0, hActorData.m_hAnimation.m_sIdleAnimation, true, 0.1f); hActorData.m_eCurrentAnimation = ActorAnimation.Idle; } } else if (FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.Walking)) { if (hActorData.m_eCurrentAnimation != ActorAnimation.Running) { hAnim.SetAnimation(0, hActorData.m_hAnimation.m_sRunAnimationName, true); hActorData.m_eCurrentAnimation = ActorAnimation.Running; } } else { if (hActorData.m_eCurrentAnimation != ActorAnimation.Idle) { hAnim.SetAnimation(0, hActorData.m_hAnimation.m_sIdleAnimation, true); hActorData.m_eCurrentAnimation = ActorAnimation.Idle; } } }
public override void OnUpdateBehaviour(ActorData hActorData, List <IActorBehaviourData> lstBehaviourData) { base.OnUpdateBehaviour(hActorData, lstBehaviourData); if (!FlagUtility.HasFlagUnsafe(hActorData.m_eStateFlag, ActorStateFlag.Fighting)) { return; } if (!lstBehaviourData.TryGetDataRW(out AttackCacheData hData)) { return; } if (!hData.m_bAttacking) { StartAttack(hActorData, lstBehaviourData, hData); } else { ProcessAttack(hActorData, lstBehaviourData, hData); } }