using System.Collections.Generic;
using UnityEngine;
namespace Invector.vCharacterController.AI.FSMBehaviour
{
///
/// Message Object to FSM Debug Window
///
public class vFSMDebugObject
{
public string message = string.Empty;
public UnityEngine.Object sender;
public vFSMDebugObject(string message, UnityEngine.Object sender = null)
{
if(!string.IsNullOrEmpty(message))
this.message = message;
this.sender = sender;
}
}
public partial interface vIFSMBehaviourController
{
Transform transform { get; }
GameObject gameObject { get; }
///
/// Use this to stop FSM Update
///
bool isStopped { get; set; }
///
/// Debug mode
///
bool debugMode { get; set; }
///
/// Debug Message List
///
List debugList { get; }
///
/// AI Controller that FSM will to control
///
vIControlAI aiController { get; set; }
///
/// of the FSMBehaviour
///
vFSMBehaviour fsmBehaviour { get; set; }
///
/// Any State of the FSM (state that makes updating independent of current)
///
vFSMState anyState { get; }
///
/// Last State of the FSM
///
vFSMState lastState { get; }
///
/// Current State of the FSM
///
vFSMState currentState { get; }
///
/// Retur index of current state
///
int indexOffCurrentState { get; }
///
/// Retur name of current state
///
string nameOffCurrentState { get; }
bool HasTimer(string key);
void RemoveTimer(string key);
///
/// Check if timer is greater than FSM timer
///
/// timer
///
float GetTimer(string key);
///
/// Reset FSM timer to zero. Auto called for when change state
///
void SetTimer(string key,float timer);
///
/// Change State
///
/// new state
void ChangeState(vFSMState state);
/////
///// Change State using index of state in . If index dont exit,there will be no changes
/////
/////
//void ChangeState(int stateIndex);
/////
///// Change State using name of state in . If name dont exit, ther will be no changes.
/////
///// name of the state in
//void ChangeState(string stateName);
void ChangeBehaviour(vFSMBehaviour behaviour);
///
/// Start FSM Update
///
void StartFSM();
///
/// Stop the FSM Update
///
void StopFSM();
///
/// Send debug Message to FSM Debug Window
///
/// Message
/// Object sending message
void SendDebug(string message, UnityEngine.Object sender = null);
}
}