importonly class GameComponent extends IComponent
{
	public import const virtual function GetPS() : GameComponentPS;
	protected import const function GetBasePS() : GameComponentPS;
	public import const final function GetPersistentID() : PersistentID;
}

importonly class GameComponentPS extends PersistentState
{
}

importonly class ScriptableComponent extends GameComponent
{
	public import const final function GetOwner() : GameObject;
	public import const final function GetGameTime() : GameTime;
	public import const final function GetEngineTime() : EngineTime;
	public import const final function GetSimTime() : EngineTime;
	public import const final function GetAudioSystem() : AudioSystem;
	public import const final function GetDebugVisualizerSystem() : DebugVisualizerSystem;
	public import const final function GetDelaySystem() : DelaySystem;
	public import const final function GetGameEffectSystem() : EffectSystem;
	public import const final function GetPlayerSystem() : PlayerSystem;
	public import const final function GetQuestsSystem() : QuestsSystem;
	public import const final function GetStatsSystem() : StatsSystem;
	public import const final function GetStatPoolsSystem() : StatPoolsSystem;
	public import const final function GetTargetingSystem() : TargetingSystem;
	public import const final function GetTimeSystem() : TimeSystem;
	public import const final function GetTransactionSystem() : TransactionSystem;
	public import const final function GetPersistencySystem() : GamePersistencySystem;
	public import const final function GetVisionModeSystem() : VisionModeSystem;
}

class TestScriptableComponent extends ScriptableComponent
{

	private function OnGameAttach()
	{
	}

	private function OnGameDetach()
	{
	}

	private function OnEditorAttach()
	{
	}

	private function OnEditorDetach()
	{
	}

	private function OnUpdate( deltaTime : Float )
	{
	}

	protected event OnHit( evt : gameHitEvent )
	{
	}

	protected event OnTakeControl( ri : EntityResolveComponentsInterface )
	{
	}

}

