#ifndef _TPG_CLBK_HPP_
#define _TPG_CLBK_HPP_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#include "CTL.h"


//////////////////////////////////////////////////
// Can Be Displayed CallBacks
//////////////////////////////////////////////////

//*** Source Generation Mode *********************
BOOL g_fn_bCallBackCanBeDisplayedSourceProbability( CTL_Editor_Control* );
BOOL g_fn_bCallBackCanBeDisplayedSourceNbFrames( CTL_Editor_Control* );

//*** Source Nb Particles To Generate Mode *******
BOOL g_fn_bCallBackCanBeDisplayedSourceNbParticles( CTL_Editor_Control* );
BOOL g_fn_bCallBackCanBeDisplayedSourceNbParticlesMinMax( CTL_Editor_Control* );

//*** Source Geometry Mode ************************
BOOL g_fn_bCallBackCanBeDisplayedSourceGeometryQuad( CTL_Editor_Control* );

BOOL g_fn_bCallBackCanBeDisplayedSourceConstantLifeTime( CTL_Editor_Control *_p_clControl );
BOOL g_fn_bCallBackCanBeDisplayedSourceProbabilistLifeTime( CTL_Editor_Control *_p_clControl );

//*** System GameMaterials *************************
BOOL g_fn_bCallBackCanBeDisplayedSystemGameMaterials( CTL_Editor_Control * );
//*** System Sprites *******************************
BOOL g_fn_bCallBackCanBeDisplayedSystemSprites( CTL_Editor_Control * );

//*** Environement Min Max Points *****
BOOL g_fn_bCallBackCanBeDisplayedEnvBox( CTL_Editor_Control * );

//*** Environement Sphere center *********
BOOL g_fn_bCallBackCanBeDisplayedEnvSphere( CTL_Editor_Control * );

/////////////////////////////////////////////////////
// Data Changed Special CallBacks
/////////////////////////////////////////////////////

//*** Source display generator when combo has changed
void g_fn_vCallBackDataChangedSpecialDisplayGenerator( CTL_Editor_Data*, CTL_eUpdateReason , long );

void g_fn_vCallBackDataChangedSpecialDisplayAll( CTL_Editor_Data*, CTL_eUpdateReason , long );


///////////////////////////////////////
// Data Changed CallBacks
///////////////////////////////////////

//*** Generator notify save when data has changed
void g_fn_vCallBackDataChangedGenerator( CTL_Editor_Data*, CTL_eUpdateReason , long );

void fn_vCBPrtSrcDataChanged( CTL_Editor_Data* , CTL_eUpdateReason, long );

//*** System notify save when data has changed
void g_fn_vCallBackDataChangedSystem( CTL_Editor_Data*, CTL_eUpdateReason , long );

//*** Environment notify save when data has changed
void g_fn_vCallBackDataChangedEnv( CTL_Editor_Data*, CTL_eUpdateReason , long );


/////////////////////////////////////////////////////
// Read-Write Modification Functions
/////////////////////////////////////////////////////

//*** Generator source change
void g_fn_vModificationWriteGeneratorSource( CTL_Editor_Data* );

//*** Generator save system engine from system editor
void g_fn_vModificationWriteGeneratorSystem( CTL_Editor_Data* );

//*** Generator save environment engine from environment editor
void g_fn_vModificationWriteGeneratorEnvironment( CTL_Editor_Data* );

//*** Generator linked generator change
void g_fn_vModificationWriteGeneratorLinkedGenerator( CTL_Editor_Data* );


//*** Source modification nb frames generation to nb frames total
void g_fn_vModificationReadSourceNbFramesGeneration( CTL_Editor_Data* );
void g_fn_vModificationWriteSourceNbFramesGeneration( CTL_Editor_Data* );

//*** System create ppoint or segment with gamematerial 
void g_fn_vModificationReadSystemGameMaterials( CTL_Editor_Data* );
void g_fn_vModificationWriteSystemObjects( CTL_Editor_Data* );

//*** Environment save min max point in env or generator linked
void g_fn_vModificationWriteEnvBox( CTL_Editor_Data * );


//////////////////////////////////////////////////////
// Must be Read-Written CallBacks
//////////////////////////////////////////////////////

//*** System is GameMaterial data taken into account *
BOOL g_fn_bCallBackMustBeReadWrittenSystemGameMaterial( CTL_Editor_Data* );

//*** System is Sprite data taken into account *
BOOL g_fn_bCallBackMustBeReadWrittenSystemSprite( CTL_Editor_Data* );

//ROMTEAM Bugs Correction (Cristian Stegaru 24/03/98)
int g_fnCanISelectThisItemCallBack (CTL_Editor_Data * p_clData, CTL_Editor_EnumElement *pNewElement);
//ENDROMTEAM Bugs Correction (Cristian Stegaru)


#endif 