
import struct SExplorationQueryContext
{
	import var inputDirectionInWorldSpace : Vector;
	import var maxAngleToCheck : float;
	import var forJumping : bool;
	//import var forDynamic : bool;
	import var dontDoZAndDistChecks : bool;
	import var laddersOnly : bool;
	import var forAutoTraverseSmall : bool;
	import var forAutoTraverseBig : bool;
}

import struct SExplorationQueryToken // previously known as SExplorationScriptToken
{
	import var valid : bool;
	import var type : EExplorationType;
	import var pointOnEdge : Vector;
	import var normal : Vector;
	import var usesHands : bool;
}
/* from cpp
enum EExplorationType
{
	ET_Jump,
	ET_Ladder,
	ET_Horse_LF,
	ET_Horse_LB,
	ET_Horse_L,
	ET_Horse_R,
	ET_Horse_RF,
	ET_Horse_RB,
	ET_Horse_B,
	ET_Boat_B,
	ET_Boat_P,
	ET_Boat_Enter_From_Beach,
	ET_Fence,
	ET_Fence_OneSided,
	ET_Ledge,
} */

function IsExplorationOneSided( exploration : SExplorationQueryToken ) : bool
{
	return exploration.type	== ET_Ladder 
		|| exploration.type	== ET_Fence_OneSided;
}

import class	CScriptedExplorationTraverser extends IScriptable
{
	import function Update( deltaTime : float );
	import function GetExplorationType( out expType : EExplorationType ) : bool;
}

abstract class W3ExplorationObject extends CEntity
{
	event OnExplorationStarted( entity : CEntity );
	
	event OnExplorationFinished( entity : CEntity );
	
	event OnAnimationStarted( entity : CEntity, data : name );
	
	event OnAnimationFinished( entity : CEntity, data : name );
	
	event OnSlideFinished( entity : CEntity );
	
	event OnExplorationEvent( entity : CEntity, data : name );
}
