/// <summary> /// Grab all the combat targets that could be affected by the style and weapon /// </summary> /// <param name="rStyle">AttackStyle that defines the field-of-attack</param> /// <param name="rWeapon">Weapon that is currently being used</param> /// <param name="rCombatTargets">List of CombatTargets we will fill with the results</param> /// <param name="rIgnore">Combatant to ignore. Typically this is the character asking for the query.</param> /// <returns></returns> public virtual int QueryCombatTargets(AttackStyle rAttackStyle, IWeaponCore rWeapon, List <CombatTarget> rCombatTargets, Transform rIgnore) { IWeaponCore lWeapon = (rWeapon != null ? rWeapon : mPrimaryWeapon); CombatFilter lFilter = new CombatFilter(rAttackStyle); lFilter.MinDistance = (rAttackStyle.MinRange > 0f ? rAttackStyle.MinRange : _MinMeleeReach + lWeapon.MinRange); lFilter.MaxDistance = (rAttackStyle.MaxRange > 0f ? rAttackStyle.MaxRange : _MaxMeleeReach + lWeapon.MaxRange); rCombatTargets.Clear(); int lTargetCount = CombatManager.QueryCombatTargets(_Transform, CombatOrigin, lFilter, rCombatTargets, rIgnore); return(lTargetCount); }
/// <summary> /// AttackStyle constructor /// </summary> /// <param name="rStyle"></param> public CombatFilter(AttackStyle rStyle) { RequireCombatant = false; MinDistance = 0.5f; MaxDistance = 3f; HorizontalFOA = rStyle.HorizontalFOA; VerticalFOA = rStyle.VerticalFOA; Layers = -1; Tag = null; }
/// <summary> /// Copy constructor /// </summary> /// <param name="rSource">Source to copy from</param> public AttackStyle(AttackStyle rSource) { if (rSource == null) { return; } _Name = rSource._Name; _ParameterID = rSource._ParameterID; _Style = rSource._Style; _IsInterruptible = rSource._IsInterruptible; _Forward = rSource._Forward; _HorizontalFOA = rSource._HorizontalFOA; _VerticalFOA = rSource._VerticalFOA; _MinRange = rSource._MinRange; _MaxRange = rSource._MaxRange; _DamageModifier = rSource._DamageModifier; }
/// <summary> /// Copy constructor /// </summary> /// <param name="rSource">Source to copy from</param> public AttackStyle(AttackStyle rSource) { if (rSource == null) { return; } _Name = rSource._Name; // CDL 07/01/2018 -_Form was missing _Form = rSource._Form; _ParameterID = rSource._ParameterID; _Style = rSource._Style; // CDL 07/01/2018 also missing : _Delay _Delay = rSource._Delay; _IsInterruptible = rSource._IsInterruptible; _Forward = rSource._Forward; _HorizontalFOA = rSource._HorizontalFOA; _VerticalFOA = rSource._VerticalFOA; _MinRange = rSource._MinRange; _MaxRange = rSource._MaxRange; _DamageModifier = rSource._DamageModifier; }
/// <summary> /// Grab all the combat targets that could be affected by the style and the primary weapon /// </summary> /// <param name="rStyle">AttackStyle that defines the field-of-attack</param> /// <param name="rCombatTargets">List of CombatTargets we will fill with the results</param> /// <returns></returns> public virtual int QueryCombatTargets(AttackStyle rStyle, List <CombatTarget> rCombatTargets) { return(QueryCombatTargets(rStyle, null, rCombatTargets, _Transform)); }