518 lines
17 KiB
C++
518 lines
17 KiB
C++
///////////////////////////////////////////////////
|
|
//
|
|
// Particles Generator Environment
|
|
//
|
|
///////////////////////////////////////////////////
|
|
|
|
#include "StdAfx.h"
|
|
|
|
#define D_MSPrtSrc_StructureDefine
|
|
|
|
#include "TPG_OEnv.hpp"
|
|
|
|
#include "_Minterf.hpp"
|
|
#include "TPG_Strg.hpp"
|
|
#include "TPG_ClBk.hpp"
|
|
|
|
#include "PRT.h"
|
|
#include "GAM.h"
|
|
#include "MTH.h"
|
|
#include "ErO.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
|
|
////////////////////////////////////////////////
|
|
// Constructor and Destructor
|
|
////////////////////////////////////////////////
|
|
CPA_PartGen_Environment::CPA_PartGen_Environment(CString _csName, PRT_tdstParticlesEnvironment *_p_stEnv, BOOL _bIsLoaded )
|
|
: CPA_SaveObject( g_pclInterface, g_C_csPartGenEnvName, E_ss_Responsible )
|
|
{
|
|
// Initialization for CPA_SaveObject
|
|
SetSectionData( this );
|
|
SetCallBackSave( m_s_fn_vCallBackSaveEnv );
|
|
SetDataPath( C_szEffectPath );
|
|
|
|
if ( fn_eRename(_csName) != E_mc_None )
|
|
SetDefaultValidName();
|
|
|
|
fn_vUpdateSectionName();
|
|
|
|
m_pri_p_clGenerator = NULL;
|
|
|
|
if( _bIsLoaded )
|
|
{
|
|
if ( _p_stEnv == NULL ) //created when new button is pressed : engine object is created
|
|
{
|
|
SetExistingSection( FALSE );
|
|
ERROR_PREPARE_M
|
|
(
|
|
g_c_csPartGenModuleNameForErrors,
|
|
"Creating a new environment",
|
|
"CPA_PartGen_Environment::CPA_PartGen_Environment",
|
|
E_ERROR_GRAVITY_FATAL,
|
|
"the engine object is not allocated"
|
|
);
|
|
PRT_fn_vCreateParticlesEnvironment( &_p_stEnv );
|
|
ERROR_ASSERT( _p_stEnv != NULL );
|
|
fn_vUpdateData( (void*)_p_stEnv );
|
|
m_pri_p_stEnv = _p_stEnv;
|
|
|
|
m_pub_fn_vSetEnvType(PRT_C_ulSphereEnv);
|
|
m_pub_fn_vSetBoxMin( 0.0, 0.0, 0.0 );
|
|
m_pub_fn_vSetBoxMax( 1.0, 1.0, 1.0 );
|
|
m_pub_fn_vSetSphereCenter( 0.0, 0.0, 0.0 );
|
|
}
|
|
else //created using linktable : engine object is loaded and used
|
|
{
|
|
SetExistingSection( TRUE );
|
|
fn_vUpdateData( (void*)_p_stEnv );
|
|
m_pri_p_stEnv = _p_stEnv;
|
|
}
|
|
m_pri_fn_vSetInternalPoints();
|
|
m_pri_fn_vFillDataList();
|
|
}
|
|
else //created : engine object is not loaded now
|
|
{
|
|
fn_vUpdateData( NULL );
|
|
m_pri_p_stEnv = NULL;
|
|
SetExistingSection( TRUE );
|
|
}
|
|
|
|
SetAvailable( _bIsLoaded );
|
|
}
|
|
|
|
CPA_PartGen_Environment::~CPA_PartGen_Environment()
|
|
{
|
|
fn_vNotifyUnSave();
|
|
}
|
|
|
|
//*********************************************
|
|
// Updates the pointer on engine object
|
|
void CPA_PartGen_Environment::m_pub_fn_vSetEnv( PRT_tdstParticlesEnvironment *_p_stEnv )
|
|
{
|
|
fn_vUpdateData( (void*)_p_stEnv );
|
|
m_pri_p_stEnv = _p_stEnv;
|
|
SetAvailable( TRUE );
|
|
|
|
m_pri_fn_vSetInternalPoints();
|
|
m_pri_fn_vFillDataList();
|
|
}
|
|
|
|
|
|
void CPA_PartGen_Environment::m_pub_fn_vSetGenerator( CPA_PartGen_Generator *_p_clGen )
|
|
{
|
|
m_pri_p_clGenerator = _p_clGen;
|
|
m_pri_fn_vSetInternalPoints();
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////
|
|
// virtual functions
|
|
/////////////////////////////////////////
|
|
long CPA_PartGen_Environment::GetDataType( void )
|
|
{
|
|
return( 0 );
|
|
}
|
|
|
|
void* CPA_PartGen_Environment::GetData( void )
|
|
{
|
|
return (void*)m_pri_p_stEnv;
|
|
}
|
|
|
|
CString CPA_PartGen_Environment::fn_csComputeReferencedSectionName(const CString _csNewName)
|
|
{
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
char szSectionName[ SCR_CV_ui_Cfg_MaxLenName ];
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
|
sprintf( szSectionName, "%s^%s:%s", C_szEnvironmentFileName, C_SectionPrtEnvDescription, (char *) LPCTSTR( _csNewName ) );
|
|
return( szSectionName );
|
|
}
|
|
|
|
|
|
//****************************************************
|
|
// load the engine object if necessary
|
|
BOOL CPA_PartGen_Environment::m_pub_fn_vLoadIfUnloaded()
|
|
{
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
SCR_tdst_Cxt_Values *p_stValues;
|
|
PRT_tdstParticlesEnvironment *p_stEnv;
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
|
if ( fn_bIsAvailable() )
|
|
return FALSE;
|
|
|
|
p_stValues = SCR_fnp_st_RdL0_AnalyseSection((char *)LPCTSTR(GetReferencedSectionName()), SCR_CDF_uw_Anl_Normal);
|
|
|
|
p_stEnv = (PRT_tdstParticlesEnvironment*)p_stValues->a_ulValues[0];
|
|
ERROR_PREPARE_M
|
|
(
|
|
g_c_csPartGenModuleNameForErrors,
|
|
"Loading an unloaded environment",
|
|
"CPA_PartGen_Environment::m_pub_fn_vLoadIfUnloaded",
|
|
E_ERROR_GRAVITY_FATAL,
|
|
"the loaded engine object is null"
|
|
);
|
|
ERROR_ASSERT( p_stEnv != NULL );
|
|
|
|
fn_vUpdateData( (void*) p_stEnv );
|
|
m_pri_p_stEnv = p_stEnv;
|
|
SetAvailable(TRUE);
|
|
|
|
m_pri_fn_vFillDataList();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
// Environment Type
|
|
void CPA_PartGen_Environment::m_pub_fn_vSetEnvType( short _wIndex )
|
|
{
|
|
PRT_M_vSetTypeParticlesEnvironment( m_pri_p_stEnv, (unsigned long)_wIndex );
|
|
fn_vNotifySave();
|
|
}
|
|
|
|
short CPA_PartGen_Environment::m_pub_fn_wGetEnvType()
|
|
{
|
|
return (short)m_pri_p_stEnv->ulEnvType;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////
|
|
// Min Max for Box type
|
|
void CPA_PartGen_Environment::m_pri_fn_vSetInternalPoints()
|
|
{
|
|
ERROR_PREPARE_M
|
|
(
|
|
g_c_csPartGenModuleNameForErrors,
|
|
"Initialize internal data min max points and center for environment",
|
|
"CPA_PartGen_Environment::m_pri_fn_vSetInternalPoints",
|
|
E_ERROR_GRAVITY_FATAL,
|
|
"Edited engine environment is NULL"
|
|
);
|
|
ERROR_ASSERT( m_pri_p_stEnv != NULL );
|
|
|
|
if( m_pri_p_clGenerator == NULL )
|
|
{
|
|
MTH3D_M_vCopyVector( (&m_pri_stMinPoint), (&(m_pri_p_stEnv->stMinPoint)) );
|
|
MTH3D_M_vCopyVector( (&m_pri_stMaxPoint), (&(m_pri_p_stEnv->stMaxPoint)) );
|
|
MTH3D_M_vCopyVector( (&m_pri_stSphereCenter), (&(m_pri_p_stEnv->stSphereCenter)) );
|
|
}
|
|
else
|
|
{
|
|
if( m_pri_p_clGenerator->m_pub_fn_bGetLinkToEnv() )
|
|
{
|
|
ERROR_PREPARE_M
|
|
(
|
|
g_c_csPartGenModuleNameForErrors,
|
|
"Initialize internal data min max points and center for environment",
|
|
"CPA_PartGen_Environment::m_pri_fn_vSetInternalPoints",
|
|
E_ERROR_GRAVITY_FATAL,
|
|
"Engine generator using the edited environment is NULL"
|
|
);
|
|
ERROR_ASSERT( m_pri_p_clGenerator->m_pri_hGenerator != NULL );
|
|
MTH3D_M_vCopyVector( (&m_pri_stMinPoint), (&(m_pri_p_clGenerator->m_pri_hGenerator->stMinPoint)) );
|
|
MTH3D_M_vCopyVector( (&m_pri_stMaxPoint), (&(m_pri_p_clGenerator->m_pri_hGenerator->stMaxPoint)) );
|
|
MTH3D_M_vCopyVector( (&m_pri_stSphereCenter), (&(m_pri_p_clGenerator->m_pri_hGenerator->stMinPoint)) );
|
|
}
|
|
else
|
|
{
|
|
MTH3D_M_vCopyVector( (&m_pri_stMinPoint), (&(m_pri_p_stEnv->stMinPoint)) );
|
|
MTH3D_M_vCopyVector( (&m_pri_stMaxPoint), (&(m_pri_p_stEnv->stMaxPoint)) );
|
|
MTH3D_M_vCopyVector( (&m_pri_stSphereCenter), (&(m_pri_p_stEnv->stSphereCenter)) );
|
|
}
|
|
}
|
|
}
|
|
|
|
void CPA_PartGen_Environment::m_pub_fn_vSetBoxMin( double _dMinX, double _dMinY, double _dMinZ )
|
|
{
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
MTH3D_tdstVector stBoxMin;
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
|
MTH3D_M_vSetVectorElements( &stBoxMin, MTH_M_xDoubleToReal(_dMinX), MTH_M_xDoubleToReal(_dMinY), MTH_M_xDoubleToReal(_dMinZ) );
|
|
MTH3D_M_vCopyVector ( &((m_pri_p_stEnv)->stMinPoint), ( &stBoxMin ) );
|
|
fn_vNotifySave();
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetBoxMinX()
|
|
{
|
|
return MTH_M_xRealToDouble( MTH3D_M_xGetXofVector( &m_pri_stMinPoint ) );
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetBoxMinY()
|
|
{
|
|
return MTH_M_xRealToDouble( MTH3D_M_xGetYofVector( &m_pri_stMinPoint ) );
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetBoxMinZ()
|
|
{
|
|
return MTH_M_xRealToDouble( MTH3D_M_xGetZofVector( &m_pri_stMinPoint ) );
|
|
}
|
|
|
|
void CPA_PartGen_Environment::m_pub_fn_vSetBoxMax( double _dMaxX, double _dMaxY, double _dMaxZ )
|
|
{
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
MTH3D_tdstVector stBoxMax;
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
|
MTH3D_M_vSetVectorElements( &stBoxMax, MTH_M_xDoubleToReal(_dMaxX), MTH_M_xDoubleToReal(_dMaxY), MTH_M_xDoubleToReal(_dMaxZ) );
|
|
MTH3D_M_vCopyVector ( &((m_pri_p_stEnv)->stMaxPoint), ( &stBoxMax ) );
|
|
fn_vNotifySave();
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetBoxMaxX()
|
|
{
|
|
return MTH_M_xRealToDouble( MTH3D_M_xGetXofVector( &m_pri_stMaxPoint ) );
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetBoxMaxY()
|
|
{
|
|
return MTH_M_xRealToDouble( MTH3D_M_xGetYofVector( &m_pri_stMaxPoint ) );
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetBoxMaxZ()
|
|
{
|
|
return MTH_M_xRealToDouble( MTH3D_M_xGetZofVector( &m_pri_stMaxPoint ) );
|
|
}
|
|
|
|
///////////////////////////////////////////////////////
|
|
// Center and Radius for Sphere type
|
|
void CPA_PartGen_Environment::m_pub_fn_vSetSphereCenter( double _dCenterX, double _dCenterY, double _dCenterZ )
|
|
{
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
MTH3D_tdstVector stSphereCenter;
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
|
MTH3D_M_vSetVectorElements( &stSphereCenter, MTH_M_xDoubleToReal(_dCenterX), MTH_M_xDoubleToReal(_dCenterY), MTH_M_xDoubleToReal(_dCenterZ) );
|
|
MTH3D_M_vCopyVector ( &((m_pri_p_stEnv)->stSphereCenter), ( &stSphereCenter ) );
|
|
fn_vNotifySave();
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetSphereCenterX()
|
|
{
|
|
//ROMTEAM Bugs Correction (Cristian Stegaru 24/03/98)
|
|
// return MTH_M_xRealToDouble( MTH3D_M_xGetXofVector( &m_pri_stSphereCenter ) );
|
|
return MTH_M_xRealToDouble (MTH3D_M_xGetXofVector (&m_pri_p_stEnv->stSphereCenter));
|
|
//ENDROMTEAM Bugs Correction (Cristian Stegaru)
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetSphereCenterY()
|
|
{
|
|
//ROMTEAM Bugs Correction (Cristian Stegaru 24/03/98)
|
|
// return MTH_M_xRealToDouble( MTH3D_M_xGetYofVector( &m_pri_stSphereCenter ) );
|
|
return MTH_M_xRealToDouble (MTH3D_M_xGetYofVector (&m_pri_p_stEnv->stSphereCenter));
|
|
//ENDROMTEAM Bugs Correction (Cristian Stegaru)
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetSphereCenterZ()
|
|
{
|
|
//ROMTEAM Bugs Correction (Cristian Stegaru 24/03/98)
|
|
// return MTH_M_xRealToDouble( MTH3D_M_xGetZofVector( &m_pri_stSphereCenter ) );
|
|
return MTH_M_xRealToDouble (MTH3D_M_xGetZofVector (&m_pri_p_stEnv->stSphereCenter));
|
|
//ENDROMTEAM Bugs Correction (Cristian Stegaru)
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetSphereRadius()
|
|
{
|
|
return MTH_M_xRealToDouble( m_pri_p_stEnv->xRadius );
|
|
}
|
|
|
|
|
|
///////////////////////////////////////////////////////
|
|
// Acceleration and Range
|
|
void CPA_PartGen_Environment::m_pub_fn_vSetAcceleration( double _dAccelerX, double _dAccelerY, double _dAccelerZ )
|
|
{
|
|
MTH3D_tdstVector stAcceleration;
|
|
MTH3D_M_vSetVectorElements( &stAcceleration, MTH_M_xDoubleToReal(_dAccelerX), MTH_M_xDoubleToReal(_dAccelerY), MTH_M_xDoubleToReal(_dAccelerZ) );
|
|
PRT_M_vSetAccelerationParticlesEnvironment( m_pri_p_stEnv, ( &stAcceleration ) );
|
|
fn_vNotifySave();
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetAccelerX()
|
|
{
|
|
return MTH_M_xRealToDouble( MTH3D_M_xGetXofVector( &((m_pri_p_stEnv)->stAcceleration )) );
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetAccelerY()
|
|
{
|
|
return MTH_M_xRealToDouble( MTH3D_M_xGetYofVector( &((m_pri_p_stEnv)->stAcceleration )) );
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetAccelerZ()
|
|
{
|
|
return MTH_M_xRealToDouble( MTH3D_M_xGetZofVector( &((m_pri_p_stEnv)->stAcceleration) ) );
|
|
}
|
|
|
|
void CPA_PartGen_Environment::m_pub_fn_vSetRange( double _dRange )
|
|
{
|
|
PRT_M_vSetAccelerationRangeParticlesEnvironment( m_pri_p_stEnv, MTH_M_xDoubleToReal(_dRange) );
|
|
fn_vNotifySave();
|
|
}
|
|
|
|
double CPA_PartGen_Environment::m_pub_fn_dGetRange()
|
|
{
|
|
return MTH_M_xRealToDouble( m_pri_p_stEnv->xAccelerationRange );
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////
|
|
// CallBack and function for save
|
|
void CPA_PartGen_Environment::m_s_fn_vCallBackSaveEnv
|
|
(
|
|
SCR_tdst_File_Description *_p_stFile,
|
|
char *_p_szSectionName,
|
|
void *_p_vData,
|
|
SCR_tde_Ntfy_Action _eAction
|
|
)
|
|
{
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
CPA_PartGen_Environment *p_clEnv;
|
|
char szSectionName[ SCR_CV_ui_Cfg_MaxLenName ];
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
|
ERROR_PREPARE_M
|
|
(
|
|
g_c_csPartGenModuleNameForErrors,
|
|
"Saving an environment",
|
|
"CPA_PartGen_Environment::m_s_fn_vCallBackSaveEnv",
|
|
E_ERROR_GRAVITY_FATAL,
|
|
"trying to save a NULL environment"
|
|
);
|
|
p_clEnv = (CPA_PartGen_Environment*)_p_vData;
|
|
ERROR_ASSERT( p_clEnv != NULL );
|
|
|
|
switch( _eAction )
|
|
{
|
|
case SCR_EA_Ntfy_AddSection:
|
|
case SCR_EA_Ntfy_AddOrModifySection:
|
|
case SCR_EA_Ntfy_AddOrRebuildSection:
|
|
case SCR_EA_Ntfy_RebuildSection:
|
|
case SCR_EA_Ntfy_ModifySection:
|
|
{
|
|
sprintf( szSectionName, "%s:%s", C_SectionPrtEnvDescription, (char *) LPCTSTR(p_clEnv->GetName()) );
|
|
SCR_M_SvL0_SaveBeginSection( _p_stFile, szSectionName, SCR_CC_C_Cfg_EOL );
|
|
p_clEnv->m_pri_fn_vSaveEnv( _p_stFile );
|
|
SCR_M_SvL0_SaveEndSection( _p_stFile, SCR_CC_C_Cfg_EOL );
|
|
p_clEnv->fn_vSectionSaved();
|
|
}
|
|
break;
|
|
|
|
case SCR_EA_Ntfy_DeleteIfExists:
|
|
case SCR_EA_Ntfy_DeleteSection:
|
|
p_clEnv->fn_vSectionDeleted();
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
void CPA_PartGen_Environment::m_pri_fn_vSaveEnv( SCR_tdst_File_Description *_p_stFile )
|
|
{
|
|
short wIndex = m_pub_fn_wGetEnvType();
|
|
|
|
SCR_M_SvL0_SaveEntry( _p_stFile, C_EntryPrtEnvType, SCR_CC_C_Cfg_NoChar );
|
|
SCR_fn_v_SvL0_SaveParameters_MP( _p_stFile, SCR_EF_SvL0_Scanf, 1, M_MAKECHAR(g_C_a_csEnvironmentTypeName[wIndex]) );
|
|
switch( wIndex )
|
|
{
|
|
case ((short)PRT_C_ulAlignedBoxEnv):
|
|
SCR_M_SvL0_SaveEntry( _p_stFile, C_EntryPrtEnvMinMaxPoint, SCR_CC_C_Cfg_NoChar );
|
|
SCR_fn_v_SvL0_SaveParameters_MP
|
|
(
|
|
_p_stFile, SCR_EF_SvL0_Scanf, 7, "%.3f,%.3f,%.3f,%.3f,%.3f,%.3f",
|
|
m_pub_fn_dGetBoxMinX(), m_pub_fn_dGetBoxMinY(), m_pub_fn_dGetBoxMinZ(),
|
|
m_pub_fn_dGetBoxMaxX(), m_pub_fn_dGetBoxMaxY(), m_pub_fn_dGetBoxMaxZ()
|
|
);
|
|
break;
|
|
case ((short)PRT_C_ulSphereEnv):
|
|
SCR_M_SvL0_SaveEntry( _p_stFile, C_EntryPrtEnvSphere, SCR_CC_C_Cfg_NoChar );
|
|
SCR_fn_v_SvL0_SaveParameters_MP
|
|
(
|
|
_p_stFile, SCR_EF_SvL0_Scanf, 5, "%.3f,%.3f,%.3f,%.3f",
|
|
m_pub_fn_dGetSphereCenterX(), m_pub_fn_dGetSphereCenterY(), m_pub_fn_dGetSphereCenterZ(),
|
|
m_pub_fn_dGetSphereRadius()
|
|
);
|
|
break;
|
|
}
|
|
|
|
SCR_M_SvL0_SaveEntry( _p_stFile, C_EntryPrtEnvAcceleration, SCR_CC_C_Cfg_NoChar );
|
|
SCR_fn_v_SvL0_SaveParameters_MP
|
|
(
|
|
_p_stFile, SCR_EF_SvL0_Scanf, 5, "%.3f,%.3f,%.3f,%.3f",
|
|
m_pub_fn_dGetAccelerX(), m_pub_fn_dGetAccelerY(), m_pub_fn_dGetAccelerZ(),
|
|
m_pub_fn_dGetRange()
|
|
);
|
|
}
|
|
|
|
|
|
void CPA_PartGen_Environment::m_pri_fn_vFillDataList()
|
|
{
|
|
CTL_Editor_Data *p_clData = NULL;
|
|
CTL_Editor_EnumDescriptor *p_clEnumDescriptor = NULL;
|
|
|
|
//**** Environment type *********************
|
|
p_clEnumDescriptor = m_pub_fn_p_clGetDocument()->m_pub_fn_p_clGetEnumDescriptorByName( "Env_Type" );
|
|
p_clData = m_pub_clDataList.m_fn_pclAddEnumData( p_clEnumDescriptor, "Environment Type" );
|
|
p_clData->m_fn_vSetMotorDataPtr( (void*)&(m_pri_p_stEnv->ulEnvType) );
|
|
p_clData->m_pub_fn_vSetDataChangedSpecialCallBackFunction( g_fn_vCallBackDataChangedSpecialDisplayGenerator );
|
|
p_clData->m_pub_fn_pclAddOwnerData( (void*)this, "EditedEnv" );
|
|
p_clData->m_pub_fn_vSetDataChangedCallBackFunction( g_fn_vCallBackDataChangedEnv );
|
|
|
|
//*** Box Min env *******************************
|
|
p_clData = m_pub_clDataList.m_fn_pclAddVectorData( sizeof(MTH_tdxReal), "Min" );
|
|
p_clData->m_fn_vSetMotorDataPtr( (void*)&(m_pri_stMinPoint) );
|
|
p_clData->m_pub_fn_pclAddOwnerData( (void*)&(m_pri_p_stEnv->ulEnvType), "EnvType" );
|
|
p_clData->m_pub_fn_pclAddOwnerData( (void*)this, "EditedEnv" );
|
|
p_clData->m_pub_fn_vSetDataChangedCallBackFunction( g_fn_vCallBackDataChangedEnv );
|
|
p_clData->m_pub_fn_vSetModificationFunctionWhenWrite( g_fn_vModificationWriteEnvBox );
|
|
|
|
//*** Box Max env *******************************
|
|
p_clData = m_pub_clDataList.m_fn_pclAddVectorData( sizeof(MTH_tdxReal), "Max" );
|
|
p_clData->m_fn_vSetMotorDataPtr( (void*)&(m_pri_stMaxPoint) );
|
|
p_clData->m_pub_fn_pclAddOwnerData( (void*)&(m_pri_p_stEnv->ulEnvType), "EnvType" );
|
|
p_clData->m_pub_fn_pclAddOwnerData( (void*)this, "EditedEnv" );
|
|
p_clData->m_pub_fn_vSetDataChangedCallBackFunction( g_fn_vCallBackDataChangedEnv );
|
|
p_clData->m_pub_fn_vSetModificationFunctionWhenWrite( g_fn_vModificationWriteEnvBox );
|
|
|
|
//*** Sphere Center *****************************
|
|
p_clData = m_pub_clDataList.m_fn_pclAddVectorData( sizeof(MTH_tdxReal), "Center" );
|
|
//ROMTEAM Bugs Correction (Cristian Stegaru 24/03/98)
|
|
// p_clData->m_fn_vSetMotorDataPtr( (void*)&(m_pri_stSphereCenter) );
|
|
p_clData->m_fn_vSetMotorDataPtr( (void*)&(m_pri_p_stEnv->stSphereCenter) );
|
|
//ENDROMTEAM Bugs Correction (Cristian Stegaru)
|
|
p_clData->m_pub_fn_pclAddOwnerData( (void*)&(m_pri_p_stEnv->ulEnvType), "EnvType" );
|
|
p_clData->m_pub_fn_pclAddOwnerData( (void*)this, "EditedEnv" );
|
|
p_clData->m_pub_fn_vSetDataChangedCallBackFunction( g_fn_vCallBackDataChangedEnv );
|
|
p_clData->m_pub_fn_vSetModificationFunctionWhenWrite( g_fn_vModificationWriteEnvSphere );
|
|
|
|
//*** Sphere radius ******************************
|
|
p_clData = m_pub_clDataList.m_fn_pclAddDecimalData( sizeof(MTH_tdxReal), "Radius" );
|
|
p_clData->m_fn_vSetMotorDataPtr( (void*)&(m_pri_p_stEnv->xRadius) );
|
|
p_clData->m_pub_fn_pclAddOwnerData( (void*)&(m_pri_p_stEnv->ulEnvType), "EnvType" );
|
|
p_clData->m_pub_fn_pclAddOwnerData( (void*)this, "EditedEnv" );
|
|
p_clData->m_pub_fn_vSetDataChangedCallBackFunction( g_fn_vCallBackDataChangedEnv );
|
|
|
|
//*** Acceleration ******************************
|
|
p_clData = m_pub_clDataList.m_fn_pclAddVectorData( sizeof(MTH_tdxReal), "Acceleration" );
|
|
p_clData->m_fn_vSetMotorDataPtr( (void*)&(m_pri_p_stEnv->stAcceleration) );
|
|
p_clData->m_pub_fn_pclAddOwnerData( (void*)this, "EditedEnv" );
|
|
p_clData->m_pub_fn_vSetDataChangedCallBackFunction( g_fn_vCallBackDataChangedEnv );
|
|
|
|
//*** Acceleration range *******************************
|
|
p_clData = m_pub_clDataList.m_fn_pclAddDecimalData( sizeof(MTH_tdxReal), "Range" );
|
|
p_clData->m_fn_vSetMotorDataPtr( (void*)&(m_pri_p_stEnv->xAccelerationRange) );
|
|
p_clData->m_pub_fn_pclAddOwnerData( (void*)this, "EditedEnv" );
|
|
p_clData->m_pub_fn_vSetDataChangedCallBackFunction( g_fn_vCallBackDataChangedEnv );
|
|
}
|
|
|
|
CPA_PartGen_MyDocument * CPA_PartGen_Environment::m_pub_fn_p_clGetDocument()
|
|
{
|
|
return g_pclInterface->m_pub_fn_p_clGetDocument();
|
|
}
|
|
|