//=============================================================================
// AIPlugin
//=============================================================================
//
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//=============================================================================
class AIPlugin extends PluginBase within BaseAIController
	native(Plugin)
	abstract;

var const protected{protected} BaseAIController MyBaseAIController;
var const protected{private} bool bCustomSetupController;

cpptext
{
	virtual UBOOL SetupController(class ABaseAIController* Owner);
	// Called if bCustomSetupController == true
	virtual UBOOL SetupControllerImpl(class ABaseAIController* Owner) PURE_VIRTUAL(UPluginBase::SetupConrollerImpl, return TRUE;);

	UBOOL HasCustomControllerSetup() const
	{
		return bCustomSetupController;
	}

	FORCEINLINE const ABaseAIController* GetController() const
	{
		return MyBaseAIController;
	}

	FORCEINLINE ABaseAIController* GetController()
	{
		return MyBaseAIController;
	}
};

event ScriptSetUp()
{

}

/**
 * ===========
 * DEBUG STATES
 * ===========
 */
state DEBUGSTATE
{
	function BeginState( Name PreviousStateName )
	{
		//debug
		`AILog( "BEGINSTATE"@PreviousStateName, 'State' );
	}

	function EndState( Name NextStateName )
	{
		//debug
		`AILog( "ENDSTATE"@NextStateName, 'State' );
	}

	function PushedState()
	{
		//debug
		`AILog( "PUSHED", 'State' );
	}

	function PoppedState()
	{
		//debug
		`AILog( "POPPED", 'State' );
	}

	function ContinuedState()
	{
		//debug
		`AILog( "CONTINUED", 'State' );
	}

	function PausedState()
	{
		//debug
		`AILog( "PAUSED", 'State' );
	}
}

defaultproperties
{
	bCustomSetupController=false
}
