using UnityEngine;
namespace Invector.vCharacterController.AI
{
using System.Collections.Generic;
using vEventSystems;
public partial interface vIControlAI : vIHealthController
{
///
/// Used just to Create AI Editor
///
void CreatePrimaryComponents();
///
/// Used just to Create AI Editor
///
void CreateSecondaryComponents();
///
/// Check if has a
///
///
///
bool HasComponent() where T : vIAIComponent;
///
/// Get Specific
///
///
///
T GetAIComponent() where T : vIAIComponent;
Vector3 selfStartPosition { get; set; }
Vector3 targetDestination { get; }
Collider selfCollider { get; }
Animator animator { get; }
vAnimatorStateInfos animatorStateInfos { get; }
vWaypointArea waypointArea { get; set; }
vAIReceivedDamegeInfo receivedDamage { get; }
vWaypoint targetWaypoint { get; }
List visitedWaypoints { get; set; }
Vector3 lastTargetPosition { get; }
bool ragdolled { get; }
bool isInDestination { get; }
bool isMoving { get; }
bool isStrafing { get; }
bool isRolling { get; }
bool isCrouching { get; set; }
bool targetInLineOfSight { get; }
vAISightMethod SightMethod { get; set; }
vAIUpdateQuality UpdatePathQuality { get; set; }
vAIUpdateQuality FindTargetUpdateQuality { get; set; }
vAIUpdateQuality CanseeTargetUpdateQuality { get; set; }
vAIMovementSpeed movementSpeed { get; }
float targetDistance { get; }
float changeWaypointDistance { get; }
Vector3 desiredVelocity { get; }
float remainingDistance { get; }
float stopingDistance { get; set; }
float minDistanceToDetect { get; set; }
float maxDistanceToDetect { get; set; }
float fieldOfView { get; set; }
bool selfStartingPoint { get; }
bool customStartPoint { get; }
Vector3 customStartPosition { get; }
void SetDetectionLayer(LayerMask mask);
void SetDetectionTags(List tags);
void SetObstaclesLayer(LayerMask mask);
void SetLineOfSight(float fov = -1, float minDistToDetect = -1, float maxDistToDetect = -1, float lostTargetDistance = -1);
void NextWayPoint();
///
/// Move AI to a position in World Space
///
/// world space position
/// movement speed
void MoveTo(Vector3 destination, vAIMovementSpeed speed = vAIMovementSpeed.Walking);
///
/// Move AI to a position in World Space and rotate to a custom direction
///
/// world space position
/// target rotation direction
/// >movement speed
void StrafeMoveTo(Vector3 destination, Vector3 forwardDirection, vAIMovementSpeed speed = vAIMovementSpeed.Walking);
///
/// Move AI to a position in World Space with out update the target rotation direction of the AI
///
/// world space position
/// >movement speed
void StrafeMoveTo(Vector3 destination, vAIMovementSpeed speed = vAIMovementSpeed.Walking);
void RotateTo(Vector3 direction);
void RollTo(Vector3 direction);
void SetCurrentTarget(Transform target);
void SetCurrentTarget(Transform target, bool overrideCanseeTarget);
void SetCurrentTarget(vAITarget target);
void SetCurrentTarget(vAITarget target, bool overrideCanseeTarget);
void RemoveCurrentTarget();
///
/// Current target
///
vAITarget currentTarget { get; }
///
/// Secundary targets storage
///
List secundaryTargets { get; set; }
///
/// Return a list of targets resulted of method
///
///
List GetTargetsInRange();
///
/// Find target using Detection settings
///
void FindTarget();
///
/// Find target with ignoring obstacles option and set to
///
///
void FindTarget(bool checkForObstacles);
///
/// Try get a target
/// Needs to call method to detect all target in range.The result is the most closest target
///
///
///
bool TryGetTarget(out vAITarget target);
///
/// Try get a target with specific tag
/// Needs to call method to detect all target in range.The result is the most closest target
///
/// possible target tag
///
///
bool TryGetTarget(string tag, out vAITarget target);
///
/// Try get a target with specific tags
///
/// Needs to call method to detect all target in range.The result is the most closest target
/// list of possible target tags
///
///
bool TryGetTarget(List m_detectTags, out vAITarget target);
///
/// Find target with specific detection settings
///
/// Needs to call method to detect all target in range.The result is the most closest target
/// list of possible target tags
/// layer of possible target
///
void FindSpecificTarget(List m_detectTags, LayerMask m_detectLayer, bool checkForObstables = true);
void LookAround();
void LookTo(Vector3 point, float stayLookTime = 1f, float offsetLookHeight = -1);
void LookToTarget(Transform target, float stayLookTime = 1f, float offsetLookHeight = -1);
void Stop();
void ForceUpdatePath(float timeInUpdate = 1f);
///
/// Check if AI is Trigger With some collider with specific tag
///
///
///
bool IsInTriggerWithTag(string tag);
///
/// Check if AI is Trigger With some collider with specific name
///
///
///
bool IsInTriggerWithName(string name);
///
/// Check if AI is Trigger With some collider with specific name
///
///
///
///
bool IsInTriggerWithTag(string tag, out Collider result);
///
/// Check if AI is Trigger With some collider with specific tag
///
///
///
///
bool IsInTriggerWithName(string name, out Collider result);
}
public partial interface vIControlAICombat : vIControlAI
{
int strafeCombatSide { get; }
float minDistanceOfTheTarget { get; }
float combatRange { get; }
bool isInCombat { get; set; }
bool strafeCombatMovement { get; }
int attackCount { get; set; }
float attackDistance { get; }
bool isAttacking { get; }
bool canAttack { get; }
void InitAttackTime();
void ResetAttackTime();
void Attack(bool strongAttack = false, int attackID = -1, bool forceCanAttack = false);
bool isBlocking { get; }
bool canBlockInCombat { get; }
void ResetBlockTime();
void Blocking();
void AimTo(Vector3 point, float stayLookTime = 1f, object sender = null);
void AimToTarget(float stayLookTime = 1f, object sender = null);
bool isAiming { get; }
bool isArmed { get; }
}
public partial interface vIControlAIMelee : vIControlAICombat
{
vMelee.vMeleeManager MeleeManager { get; set; }
void SetMeleeHitTags(List tags);
}
public partial interface vIControlAIShooter : vIControlAICombat
{
vAIShooterManager shooterManager { get; set; }
void SetShooterHitLayer(LayerMask mask);
///
/// Check if Aim is aligned to the target position setted from method
///
bool IsInShotAngle { get; }
}
}