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; } } }