/*************************************************************************/
/*	File : CKDebugContext.h			 			 						 */
/*	Author :  Romain Sididris											 */	
/*																		 */	
/*	Virtools SDK 															 */	 
/*	Copyright (c) Virtools 2000, All Rights Reserved.						 */	
/*************************************************************************/
#ifndef CKDEBUGCONTEXT_H

#define CKDEBUGCONTEXT_H "$Id:$"

#include "CKObjectArray.h"


typedef enum CKDEBUG_STATE { 	
	CKDEBUG_NOP						= 0x00000000,
	CKDEBUG_BEHEXECUTE				= 0x00000001,
	CKDEBUG_BEHEXECUTEDONE			= 0x00000002,
	CKDEBUG_SCRIPTEXECUTEDONE		= 0x00000004,
} CKDEBUG_STATE;



class CKDebugContext {

public:
	float delta;

	CKBeObject* CurrentObject;
	CKBehavior* CurrentScript;
	CKBehavior* CurrentBehavior;
	CKBehavior* SubBehavior;
	CKObjectArray ObjectsToExecute;
	CKObjectArray ScriptsToExecute;
	CKObjectArray BehaviorStack;  
	CKContext*	  m_Context;	

// Behavior Part 
	CKDEBUG_STATE CurrentBehaviorAction;
	CKBOOL InDebug;

	void Init(XObjectPointerArray& array,float delta);
	void StepInto(CKBehavior *beh);
	void StepBehavior();
	CKBOOL DebugStep();
	void Clear();

	CKDebugContext(CKContext* context) 
	{
		m_Context=context;
		delta=0;
		CurrentObject=0;
		CurrentScript=0;
		CurrentBehavior=0;
		SubBehavior=0;

		InDebug = 0;
		CurrentBehaviorAction = CKDEBUG_NOP;
	}

};

#endif