mirror of
https://github.com/ptitSeb/Serious-Engine
synced 2024-11-22 18:30:27 +01:00
1577 lines
65 KiB
C++
1577 lines
65 KiB
C++
/*
|
|
* This file is generated by Entity Class Compiler, (c) CroTeam 1997-98
|
|
*/
|
|
|
|
#line 4 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
|
|
#include "StdH.h"
|
|
#include "EntitiesMP/BackgroundViewer.h"
|
|
#include "EntitiesMP/WorldSettingsController.h"
|
|
// for error checking:
|
|
#include "EntitiesMP/SoundHolder.h"
|
|
|
|
#include <EntitiesMP/WorldBase.h>
|
|
#include <EntitiesMP/WorldBase_tables.h>
|
|
#line 17 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
|
|
|
|
inline void Clear(EntityStats &es) {es.es_strName.Clear();};
|
|
static CDynamicArray<EntityStats> _aes;
|
|
static CAnimObject _aoLightningColor;
|
|
|
|
EntityStats *FindStats(const CTString &strName)
|
|
{
|
|
{FOREACHINDYNAMICARRAY(_aes, EntityStats, ites) {
|
|
EntityStats &es = *ites;
|
|
if (es.es_strName==strName) {
|
|
return &es;
|
|
}
|
|
}}
|
|
return NULL;
|
|
}
|
|
|
|
static void MakeWorldStatistics(void)
|
|
{
|
|
// get the world pointer
|
|
CWorld *pwo = (CWorld *)_pShell->GetINDEX("pwoCurrentWorld");
|
|
// if there is no current world
|
|
if (pwo==NULL) {
|
|
CPrintF("No current world.\n");
|
|
return;
|
|
}
|
|
|
|
// for each entity in the world
|
|
{FOREACHINDYNAMICCONTAINER(pwo->wo_cenEntities, CEntity, iten) {
|
|
// get its stats
|
|
EntityStats esCurrent;
|
|
BOOL bHasStats = iten->FillEntityStatistics(&esCurrent);
|
|
// if no stats
|
|
if (!bHasStats) {
|
|
// skip it
|
|
continue;
|
|
}
|
|
|
|
// find existing stats with same name
|
|
EntityStats *pesOld = FindStats(esCurrent.es_strName);
|
|
// if such stats exists
|
|
if (pesOld!=NULL) {
|
|
// update the existing stats
|
|
pesOld->es_ctCount += esCurrent.es_ctCount;
|
|
pesOld->es_ctAmmount += esCurrent.es_ctAmmount*esCurrent.es_ctCount;
|
|
pesOld->es_fValue += esCurrent.es_fValue*esCurrent.es_ctCount;
|
|
pesOld->es_iScore += esCurrent.es_iScore*esCurrent.es_ctCount;
|
|
// if this a new name
|
|
} else {
|
|
// create new stats
|
|
EntityStats &esNew = *_aes.New();
|
|
esNew.es_strName = esCurrent.es_strName;
|
|
esNew.es_ctCount = esCurrent.es_ctCount;
|
|
esNew.es_ctAmmount = esCurrent.es_ctAmmount*esCurrent.es_ctCount;
|
|
esNew.es_fValue = esCurrent.es_fValue*esCurrent.es_ctCount;
|
|
esNew.es_iScore = esCurrent.es_iScore*esCurrent.es_ctCount;
|
|
}
|
|
}}
|
|
|
|
// dump all stats
|
|
try {
|
|
CTFileStream strm;
|
|
CTFileName fnm = CTString("Temp\\Statistics.txt");
|
|
strm.Create_t(fnm);
|
|
CTString strLine;
|
|
strLine.PrintF("%-40s: %8s %8s %10s %10s",
|
|
"name", "count", "ammount", "health", "score");
|
|
strm.PutLine_t(strLine);
|
|
{FOREACHINDYNAMICARRAY(_aes, EntityStats, ites) {
|
|
EntityStats &es = *ites;
|
|
CTString strLine;
|
|
strLine.PrintF("%-40s: %8d %8d %10g %10d",
|
|
es.es_strName, es.es_ctCount, es.es_ctAmmount, es.es_fValue, es.es_iScore);
|
|
strm.PutLine_t(strLine);
|
|
}}
|
|
CPrintF("Dumped to '%s'\n", CTString(fnm));
|
|
} catch (char *strError) {
|
|
CPrintF("Error: %s\n", strError);
|
|
}
|
|
|
|
_aes.Clear();
|
|
}
|
|
|
|
static void ReoptimizeAllBrushes(void)
|
|
{
|
|
// get the world pointer
|
|
CWorld *pwo = (CWorld *)_pShell->GetINDEX("pwoCurrentWorld");
|
|
// if there is no current world
|
|
if (pwo==NULL) {
|
|
CPrintF("No current world.\n");
|
|
return;
|
|
}
|
|
|
|
// for each brush in the world
|
|
FOREACHINDYNAMICARRAY(pwo->wo_baBrushes.ba_abrBrushes, CBrush3D, itbr) {
|
|
CBrush3D &br=*itbr;
|
|
// for each mip in the brush
|
|
FOREACHINLIST(CBrushMip, bm_lnInBrush, itbr->br_lhBrushMips, itbm) {
|
|
// reoptimize it
|
|
itbm->Reoptimize();
|
|
}
|
|
}
|
|
CPrintF("All brushes reoptimized.\n");
|
|
}
|
|
|
|
static void DoLevelSafetyChecks()
|
|
{
|
|
|
|
BOOL bWorldSettingsControllerExists = FALSE;
|
|
|
|
CPrintF("\n**** BEGIN Level safety checking ****\n\n");
|
|
|
|
// get the world pointer
|
|
CWorld *pwo = (CWorld *)_pShell->GetINDEX("pwoCurrentWorld");
|
|
// if there is no current world
|
|
if (pwo==NULL) {
|
|
CPrintF("Error - no current world.\n");
|
|
return;
|
|
}
|
|
|
|
CPrintF("STEP 1 - Checking model holders...\n");
|
|
// for model holder in the world;
|
|
{FOREACHINDYNAMICCONTAINER(pwo->wo_cenEntities, CEntity, iten) {
|
|
if (IsOfClass(iten, "ModelHolder2")) {
|
|
CModelHolder2 *mh = (CModelHolder2*)&*iten;
|
|
FLOAT3D vPos = mh->GetPlacement().pl_PositionVector;
|
|
if (mh->m_penDestruction == NULL) {
|
|
CPrintF(" model holder '%s' at (%2.2f, %2.2f, %2.2f) has no destruction\n", mh->m_strName, vPos(1), vPos(2), vPos(3));
|
|
}
|
|
}
|
|
}}
|
|
|
|
CPrintF("STEP 2 - Checking sound holders...\n");
|
|
// for each sound holder in the world
|
|
{FOREACHINDYNAMICCONTAINER(pwo->wo_cenEntities, CEntity, iten) {
|
|
if (IsOfClass(iten, "SoundHolder")) {
|
|
CSoundHolder *sh = (CSoundHolder *)&*iten;
|
|
FLOAT3D vPos = sh->GetPlacement().pl_PositionVector;
|
|
if (sh->m_fnSound == CTFILENAME("Sounds\\Default.wav")) {
|
|
CPrintF(" sound holder '%s' at (%2.2f, %2.2f, %2.2f) has default sound!\n", sh->m_strName, vPos(1), vPos(2), vPos(3));
|
|
}
|
|
}
|
|
}}
|
|
|
|
|
|
CPrintF("STEP 3 - Checking other important entities...\n");
|
|
CWorldSettingsController *pwsc = NULL;
|
|
class CBackgroundViewer *penBcgViewer = (CBackgroundViewer *) pwo->GetBackgroundViewer();
|
|
if( penBcgViewer != NULL) {
|
|
// obtain world settings controller
|
|
pwsc = (CWorldSettingsController *) &*penBcgViewer->m_penWorldSettingsController;
|
|
}
|
|
|
|
if (pwsc!=NULL) {
|
|
CPrintF("\n OK! World settings controller exists!\n");
|
|
} else {
|
|
CPrintF("\n ERROR! World settings controller does not exist (or isn't connected to the background viewer)!\n");
|
|
}
|
|
|
|
CPrintF("\n**** END Level safety checking ****\n");
|
|
|
|
}
|
|
|
|
void SetPyramidPlateActivateAlpha(CWorld *pwo, INDEX iBlending,
|
|
TIME tmActivated, TIME tmDeactivated, BOOL bPulsate)
|
|
{
|
|
TIME tmNow = _pTimer->CurrentTick();
|
|
TIME tmStop = 2.0f;
|
|
FLOAT fRatio;
|
|
|
|
// get alpha
|
|
if( tmNow>tmDeactivated)
|
|
{
|
|
// if plate is deactivated
|
|
if( tmNow>tmDeactivated+tmStop)
|
|
{
|
|
fRatio = 0;
|
|
}
|
|
// if fading out
|
|
else
|
|
{
|
|
fRatio = CalculateRatio(tmNow, tmDeactivated, tmDeactivated+tmStop, 0.0f, 1.0f);
|
|
}
|
|
}
|
|
else if( tmNow>tmActivated)
|
|
{
|
|
// if full visible
|
|
if( tmNow>tmActivated+tmStop)
|
|
{
|
|
fRatio = 1;
|
|
}
|
|
else
|
|
{
|
|
// fade in
|
|
fRatio = CalculateRatio(tmNow, tmActivated, tmActivated+tmStop, 1.0f, 0.0f);
|
|
}
|
|
}
|
|
// not yet activated
|
|
else
|
|
{
|
|
fRatio = 0;
|
|
}
|
|
FLOAT fSinFactor = 1.0f;
|
|
if( bPulsate)
|
|
{
|
|
fSinFactor = Sin((tmNow-tmActivated) * 720.0f)*0.5f+0.5f;
|
|
}
|
|
|
|
UBYTE ub = UBYTE( fRatio*fSinFactor*255.0f);
|
|
// apply blend or add
|
|
if( pwo->wo_atbTextureBlendings[iBlending].tb_ubBlendingType == STXF_BLEND_ALPHA)
|
|
{
|
|
pwo->wo_atbTextureBlendings[iBlending].tb_colMultiply = C_WHITE|ub;
|
|
}
|
|
else if( pwo->wo_atbTextureBlendings[iBlending].tb_ubBlendingType == STXF_BLEND_ADD)
|
|
{
|
|
pwo->wo_atbTextureBlendings[iBlending].tb_colMultiply = RGBAToColor(ub,ub,ub,255);
|
|
}
|
|
}
|
|
|
|
void SetPyramidMorphRoomAlpha(CWorld *pwo, INDEX iBlending, TIME tmActivated)
|
|
{
|
|
TIME tmNow = _pTimer->CurrentTick();
|
|
TIME tmDelta = tmNow-tmActivated;
|
|
FLOAT fRatio;
|
|
FLOAT tmAppear=10.0f;
|
|
|
|
if( tmNow<=tmActivated) { return;}
|
|
|
|
// get alpha
|
|
if( tmNow>=tmActivated+tmAppear)
|
|
{
|
|
fRatio = 1;
|
|
}
|
|
else
|
|
{
|
|
fRatio = CalculateRatio(tmNow, tmActivated, tmActivated+tmAppear, 1.0f, 0.0f);
|
|
}
|
|
|
|
FLOAT fSinFactor = Sin(-90+tmDelta*90*(1.0f+tmDelta/tmAppear*4))*0.5f+0.5f;
|
|
//FLOAT fSinFactor = Sin(-90+90*tmDelta)*0.5f+0.5f;
|
|
//UBYTE ub = fSinFactor*255.0f;
|
|
UBYTE ub = UBYTE((fRatio+(1.0f-fRatio)*fSinFactor)*255.0f);
|
|
|
|
// apply blend or add
|
|
if( pwo->wo_atbTextureBlendings[iBlending].tb_ubBlendingType == STXF_BLEND_ALPHA)
|
|
{
|
|
pwo->wo_atbTextureBlendings[iBlending].tb_colMultiply = C_WHITE|ub;
|
|
}
|
|
else if( pwo->wo_atbTextureBlendings[iBlending].tb_ubBlendingType == STXF_BLEND_ADD)
|
|
{
|
|
pwo->wo_atbTextureBlendings[iBlending].tb_colMultiply = RGBAToColor(ub,ub,ub,255);
|
|
}
|
|
}
|
|
|
|
void CWorldBase_OnWorldInit(CWorld *pwo)
|
|
{
|
|
pwo->wo_attTextureTransformations[0].tt_strName = "None";
|
|
pwo->wo_attTextureTransformations[1].tt_strName = "R Extremly Slow";
|
|
pwo->wo_attTextureTransformations[2].tt_strName = "R Very Slow";
|
|
pwo->wo_attTextureTransformations[3].tt_strName = "R Slow";
|
|
pwo->wo_attTextureTransformations[4].tt_strName = "R Medium";
|
|
pwo->wo_attTextureTransformations[5].tt_strName = "R Fast";
|
|
pwo->wo_attTextureTransformations[6].tt_strName = "R Very Fast";
|
|
pwo->wo_attTextureTransformations[7].tt_strName = "R Extremly Fast";
|
|
|
|
pwo->wo_attTextureTransformations[8].tt_strName = "Dummy 1";
|
|
pwo->wo_attTextureTransformations[9].tt_strName = "Dummy 2";
|
|
pwo->wo_attTextureTransformations[10].tt_strName = "Dummy 3";
|
|
|
|
pwo->wo_attTextureTransformations[11].tt_strName = "Water movement extremly slow";
|
|
pwo->wo_attTextureTransformations[12].tt_strName = "Water movement very slow";
|
|
pwo->wo_attTextureTransformations[13].tt_strName = "Water movement slow";
|
|
pwo->wo_attTextureTransformations[14].tt_strName = "Water movement normal";
|
|
pwo->wo_attTextureTransformations[15].tt_strName = "Water movement fast";
|
|
|
|
pwo->wo_attTextureTransformations[16].tt_strName = "Stormy sky appearing";
|
|
|
|
pwo->wo_attTextureTransformations[17].tt_strName = "Rotation Left 1";
|
|
pwo->wo_attTextureTransformations[18].tt_strName = "Rotation Left 2";
|
|
pwo->wo_attTextureTransformations[19].tt_strName = "Rotation Left 3";
|
|
pwo->wo_attTextureTransformations[20].tt_strName = "Rotation Left 4";
|
|
pwo->wo_attTextureTransformations[21].tt_strName = "Rotation Left 5";
|
|
pwo->wo_attTextureTransformations[22].tt_strName = "Rotation Left 6";
|
|
pwo->wo_attTextureTransformations[23].tt_strName = "Rotation Left 7";
|
|
pwo->wo_attTextureTransformations[24].tt_strName = "Rotation Left 8";
|
|
pwo->wo_attTextureTransformations[25].tt_strName = "Rotation Left 9";
|
|
pwo->wo_attTextureTransformations[26].tt_strName = "Rotation Left 10";
|
|
|
|
pwo->wo_attTextureTransformations[27].tt_strName = "Rotation Right 1";
|
|
pwo->wo_attTextureTransformations[28].tt_strName = "Rotation Right 2";
|
|
pwo->wo_attTextureTransformations[29].tt_strName = "Rotation Right 3";
|
|
pwo->wo_attTextureTransformations[30].tt_strName = "Rotation Right 4";
|
|
pwo->wo_attTextureTransformations[31].tt_strName = "Rotation Right 5";
|
|
pwo->wo_attTextureTransformations[32].tt_strName = "Rotation Right 6";
|
|
pwo->wo_attTextureTransformations[33].tt_strName = "Rotation Right 7";
|
|
pwo->wo_attTextureTransformations[34].tt_strName = "Rotation Right 8";
|
|
pwo->wo_attTextureTransformations[35].tt_strName = "Rotation Right 9";
|
|
pwo->wo_attTextureTransformations[36].tt_strName = "Rotation Right 10";
|
|
|
|
pwo->wo_attTextureTransformations[37].tt_strName = "D Extremly Slow";
|
|
pwo->wo_attTextureTransformations[38].tt_strName = "D Very Slow";
|
|
pwo->wo_attTextureTransformations[39].tt_strName = "D Slow";
|
|
pwo->wo_attTextureTransformations[40].tt_strName = "D Medium";
|
|
pwo->wo_attTextureTransformations[41].tt_strName = "D Fast";
|
|
pwo->wo_attTextureTransformations[42].tt_strName = "D Very Fast";
|
|
pwo->wo_attTextureTransformations[43].tt_strName = "D Extremly Fast";
|
|
pwo->wo_attTextureTransformations[44].tt_strName = "D Super Fast";
|
|
pwo->wo_attTextureTransformations[45].tt_strName = "D Abnormaly Fast";
|
|
|
|
// static
|
|
pwo->wo_atbTextureBlendings[0].tb_strName = "Opaque";
|
|
pwo->wo_atbTextureBlendings[0].tb_ubBlendingType = STXF_BLEND_OPAQUE;
|
|
|
|
pwo->wo_atbTextureBlendings[1].tb_strName = "Shade";
|
|
pwo->wo_atbTextureBlendings[1].tb_ubBlendingType = STXF_BLEND_SHADE;
|
|
|
|
pwo->wo_atbTextureBlendings[2].tb_strName = "Blend";
|
|
pwo->wo_atbTextureBlendings[2].tb_ubBlendingType = STXF_BLEND_ALPHA;
|
|
|
|
pwo->wo_atbTextureBlendings[3].tb_strName = "Add";
|
|
pwo->wo_atbTextureBlendings[3].tb_ubBlendingType = STXF_BLEND_ADD;
|
|
// pulsating
|
|
pwo->wo_atbTextureBlendings[4].tb_strName = "Shade pulsating";
|
|
pwo->wo_atbTextureBlendings[4].tb_ubBlendingType = STXF_BLEND_SHADE;
|
|
pwo->wo_atbTextureBlendings[4].tb_colMultiply = 0x808080FF;
|
|
|
|
pwo->wo_atbTextureBlendings[5].tb_strName = "Blend pulsating full";
|
|
pwo->wo_atbTextureBlendings[5].tb_ubBlendingType = STXF_BLEND_ALPHA;
|
|
pwo->wo_atbTextureBlendings[5].tb_colMultiply = C_WHITE|0x80;
|
|
|
|
pwo->wo_atbTextureBlendings[6].tb_strName = "Add pulsating";
|
|
pwo->wo_atbTextureBlendings[6].tb_ubBlendingType = STXF_BLEND_ADD;
|
|
pwo->wo_atbTextureBlendings[6].tb_colMultiply = 0x808080FF;
|
|
|
|
pwo->wo_atbTextureBlendings[7].tb_strName = "Blend pulsating half";
|
|
pwo->wo_atbTextureBlendings[7].tb_ubBlendingType = STXF_BLEND_ALPHA;
|
|
pwo->wo_atbTextureBlendings[7].tb_colMultiply = C_WHITE|0xC0;
|
|
|
|
pwo->wo_atbTextureBlendings[8].tb_strName = "Wsc blend";
|
|
pwo->wo_atbTextureBlendings[8].tb_ubBlendingType = STXF_BLEND_ALPHA;
|
|
pwo->wo_atbTextureBlendings[8].tb_colMultiply = C_WHITE|0x00;
|
|
|
|
pwo->wo_atbTextureBlendings[9].tb_strName = "Wsc shade";
|
|
pwo->wo_atbTextureBlendings[9].tb_ubBlendingType = STXF_BLEND_SHADE;
|
|
pwo->wo_atbTextureBlendings[9].tb_colMultiply = C_WHITE|0xFF;
|
|
|
|
pwo->wo_atbTextureBlendings[10].tb_strName = "Pyramid plate appearing";
|
|
pwo->wo_atbTextureBlendings[10].tb_ubBlendingType = STXF_BLEND_ALPHA;
|
|
pwo->wo_atbTextureBlendings[10].tb_colMultiply = C_WHITE|0x00;
|
|
|
|
pwo->wo_atbTextureBlendings[11].tb_strName = "Activated plate 1";
|
|
pwo->wo_atbTextureBlendings[11].tb_ubBlendingType = STXF_BLEND_ADD;
|
|
pwo->wo_atbTextureBlendings[11].tb_colMultiply = C_BLACK|CT_OPAQUE;
|
|
|
|
pwo->wo_atbTextureBlendings[12].tb_strName = "Activated plate 2";
|
|
pwo->wo_atbTextureBlendings[12].tb_ubBlendingType = STXF_BLEND_ADD;
|
|
pwo->wo_atbTextureBlendings[12].tb_colMultiply = C_BLACK|CT_OPAQUE;
|
|
|
|
pwo->wo_atbTextureBlendings[13].tb_strName = "Activated plate 3";
|
|
pwo->wo_atbTextureBlendings[13].tb_ubBlendingType = STXF_BLEND_ADD;
|
|
pwo->wo_atbTextureBlendings[13].tb_colMultiply = C_BLACK|CT_OPAQUE;
|
|
|
|
pwo->wo_atbTextureBlendings[14].tb_strName = "Activated plate 4";
|
|
pwo->wo_atbTextureBlendings[14].tb_ubBlendingType = STXF_BLEND_ADD;
|
|
pwo->wo_atbTextureBlendings[14].tb_colMultiply = C_BLACK|CT_OPAQUE;
|
|
|
|
pwo->wo_atbTextureBlendings[15].tb_strName = "Activate pyramid morph room";
|
|
pwo->wo_atbTextureBlendings[15].tb_ubBlendingType = STXF_BLEND_ALPHA;
|
|
pwo->wo_atbTextureBlendings[15].tb_colMultiply = C_WHITE|0x00;
|
|
|
|
pwo->wo_aitIlluminationTypes[0].it_strName = "None";
|
|
pwo->wo_aitIlluminationTypes[1].it_strName = "Vitraj 1";
|
|
pwo->wo_aitIlluminationTypes[2].it_strName = "Vitraj 2";
|
|
pwo->wo_aitIlluminationTypes[3].it_strName = "Vitraj 3";
|
|
pwo->wo_aitIlluminationTypes[4].it_strName = "Lava 1";
|
|
pwo->wo_aitIlluminationTypes[5].it_strName = "Lava 2";
|
|
pwo->wo_aitIlluminationTypes[6].it_strName = "Lava 3";
|
|
pwo->wo_aitIlluminationTypes[7].it_strName = "Misc 1";
|
|
pwo->wo_aitIlluminationTypes[8].it_strName = "Misc 2";
|
|
pwo->wo_aitIlluminationTypes[9].it_strName = "Misc 3";
|
|
|
|
// surfaces
|
|
|
|
pwo->wo_astSurfaceTypes[0].st_strName = "Standard";
|
|
pwo->wo_astSurfaceTypes[0].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[0].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[0].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[0].st_fClimbSlopeCos = Cos(45.0f);
|
|
|
|
pwo->wo_astSurfaceTypes[1].st_strName = "Ice";
|
|
pwo->wo_astSurfaceTypes[1].st_fFriction = 0.045f;
|
|
pwo->wo_astSurfaceTypes[1].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[1].st_fJumpSlopeCos = Cos(5.0f);
|
|
pwo->wo_astSurfaceTypes[1].st_fClimbSlopeCos = Cos(5.0f);
|
|
|
|
pwo->wo_astSurfaceTypes[2].st_strName = "Standard - no step";
|
|
pwo->wo_astSurfaceTypes[2].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[2].st_fStairsHeight = -0.2f;
|
|
pwo->wo_astSurfaceTypes[2].st_fJumpSlopeCos = Cos(10.0f);
|
|
pwo->wo_astSurfaceTypes[2].st_fClimbSlopeCos = Cos(10.0f);
|
|
|
|
pwo->wo_astSurfaceTypes[3].st_strName = "Standard - high stairs";
|
|
pwo->wo_astSurfaceTypes[3].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[3].st_fStairsHeight = 2.0f;
|
|
pwo->wo_astSurfaceTypes[3].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[3].st_fClimbSlopeCos = Cos(45.0f);
|
|
|
|
pwo->wo_astSurfaceTypes[4].st_strName = "Ice climbable slope";
|
|
pwo->wo_astSurfaceTypes[4].st_fFriction = 0.05f;
|
|
pwo->wo_astSurfaceTypes[4].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[4].st_fJumpSlopeCos = Cos(15.0f);
|
|
pwo->wo_astSurfaceTypes[4].st_fClimbSlopeCos = Cos(15.0f);
|
|
|
|
pwo->wo_astSurfaceTypes[5].st_strName = "Ice sliding slope";
|
|
pwo->wo_astSurfaceTypes[5].st_fFriction = 0.001f;
|
|
pwo->wo_astSurfaceTypes[5].st_fStairsHeight = 0.0f;
|
|
pwo->wo_astSurfaceTypes[5].st_fJumpSlopeCos = Cos(5.0f);
|
|
pwo->wo_astSurfaceTypes[5].st_fClimbSlopeCos = Cos(5.0f);
|
|
|
|
pwo->wo_astSurfaceTypes[6].st_strName = "Ice less sliding";
|
|
pwo->wo_astSurfaceTypes[6].st_fFriction = 0.06f;
|
|
pwo->wo_astSurfaceTypes[6].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[6].st_fJumpSlopeCos = Cos(5.0f);
|
|
pwo->wo_astSurfaceTypes[6].st_fClimbSlopeCos = Cos(5.0f);
|
|
|
|
pwo->wo_astSurfaceTypes[7].st_strName = "Roller coaster";
|
|
pwo->wo_astSurfaceTypes[7].st_fFriction = 0.1f;
|
|
pwo->wo_astSurfaceTypes[7].st_fStairsHeight = 0.0f;
|
|
pwo->wo_astSurfaceTypes[7].st_fJumpSlopeCos = Cos(5.0f);
|
|
pwo->wo_astSurfaceTypes[7].st_fClimbSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[7].st_ulFlags = STF_SLIDEDOWNSLOPE;
|
|
|
|
pwo->wo_astSurfaceTypes[8].st_strName = "Lava";
|
|
pwo->wo_astSurfaceTypes[8].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[8].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[8].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[8].st_fClimbSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[8].st_iWalkDamageType = DMT_BURNING;
|
|
pwo->wo_astSurfaceTypes[8].st_fWalkDamageAmount = 2.0f;
|
|
pwo->wo_astSurfaceTypes[8].st_tmWalkDamageFrequency = 0.5f;
|
|
|
|
ASSERT(9==SURFACE_SAND);
|
|
pwo->wo_astSurfaceTypes[9].st_strName = "Sand";
|
|
pwo->wo_astSurfaceTypes[9].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[9].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[9].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[9].st_fClimbSlopeCos = Cos(45.0f);
|
|
|
|
pwo->wo_astSurfaceTypes[10].st_strName = "Clibamble Slope";
|
|
pwo->wo_astSurfaceTypes[10].st_fFriction = 2.0f;
|
|
pwo->wo_astSurfaceTypes[10].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[10].st_fJumpSlopeCos = Cos(60.0f);
|
|
pwo->wo_astSurfaceTypes[10].st_fClimbSlopeCos = Cos(60.0f);
|
|
|
|
pwo->wo_astSurfaceTypes[11].st_strName = "Standard - no impact";
|
|
pwo->wo_astSurfaceTypes[11].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[11].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[11].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[11].st_fClimbSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[11].st_ulFlags = STF_NOIMPACT;
|
|
|
|
ASSERT(12==SURFACE_WATER);
|
|
pwo->wo_astSurfaceTypes[12].st_strName = "Water";
|
|
pwo->wo_astSurfaceTypes[12].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[12].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[12].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[12].st_fClimbSlopeCos = Cos(45.0f);
|
|
|
|
ASSERT(13==SURFACE_RED_SAND);
|
|
pwo->wo_astSurfaceTypes[13].st_strName = "Red sand";
|
|
pwo->wo_astSurfaceTypes[13].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[13].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[13].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[13].st_fClimbSlopeCos = Cos(45.0f);
|
|
|
|
pwo->wo_astSurfaceTypes[14].st_strName = "Ice sliding slope no impact";
|
|
pwo->wo_astSurfaceTypes[14].st_fFriction = 0.001f;
|
|
pwo->wo_astSurfaceTypes[14].st_fStairsHeight = 0.0f;
|
|
pwo->wo_astSurfaceTypes[14].st_fJumpSlopeCos = Cos(5.0f);
|
|
pwo->wo_astSurfaceTypes[14].st_fClimbSlopeCos = Cos(5.0f);
|
|
pwo->wo_astSurfaceTypes[14].st_ulFlags = STF_NOIMPACT;
|
|
|
|
pwo->wo_astSurfaceTypes[15].st_strName = "Roller coaster no impact";
|
|
pwo->wo_astSurfaceTypes[15].st_fFriction = 0.1f;
|
|
pwo->wo_astSurfaceTypes[15].st_fStairsHeight = 0.0f;
|
|
pwo->wo_astSurfaceTypes[15].st_fJumpSlopeCos = Cos(5.0f);
|
|
pwo->wo_astSurfaceTypes[15].st_fClimbSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[15].st_ulFlags = STF_SLIDEDOWNSLOPE | STF_NOIMPACT;
|
|
|
|
pwo->wo_astSurfaceTypes[16].st_strName = "Standard - high stairs no impact";
|
|
pwo->wo_astSurfaceTypes[16].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[16].st_fStairsHeight = 2.0f;
|
|
pwo->wo_astSurfaceTypes[16].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[16].st_fClimbSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[16].st_ulFlags = STF_NOIMPACT;
|
|
|
|
ASSERT(17==SURFACE_GRASS);
|
|
pwo->wo_astSurfaceTypes[17].st_strName = "Grass";
|
|
pwo->wo_astSurfaceTypes[17].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[17].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[17].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[17].st_fClimbSlopeCos = Cos(45.0f);
|
|
|
|
ASSERT(18==SURFACE_WOOD);
|
|
pwo->wo_astSurfaceTypes[18].st_strName = "Wood";
|
|
pwo->wo_astSurfaceTypes[18].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[18].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[18].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[18].st_fClimbSlopeCos = Cos(45.0f);
|
|
|
|
ASSERT(19==SURFACE_GRASS_SLIDING);
|
|
pwo->wo_astSurfaceTypes[19].st_strName = "Grass sliding";
|
|
pwo->wo_astSurfaceTypes[19].st_fFriction = 0.1f;
|
|
pwo->wo_astSurfaceTypes[19].st_fStairsHeight = 0.0f;
|
|
pwo->wo_astSurfaceTypes[19].st_fJumpSlopeCos = Cos(5.0f);
|
|
pwo->wo_astSurfaceTypes[19].st_fClimbSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[19].st_ulFlags = STF_SLIDEDOWNSLOPE;
|
|
|
|
ASSERT(20==SURFACE_GRASS_NOIMPACT);
|
|
pwo->wo_astSurfaceTypes[20].st_strName = "Grass no impact";
|
|
pwo->wo_astSurfaceTypes[20].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[20].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[20].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[20].st_fClimbSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[20].st_ulFlags = STF_NOIMPACT;
|
|
|
|
ASSERT(21==SURFACE_SNOW);
|
|
pwo->wo_astSurfaceTypes[21].st_strName = "Snow";
|
|
pwo->wo_astSurfaceTypes[21].st_fFriction = 1.0f;
|
|
pwo->wo_astSurfaceTypes[21].st_fStairsHeight = 1.0f;
|
|
pwo->wo_astSurfaceTypes[21].st_fJumpSlopeCos = Cos(45.0f);
|
|
pwo->wo_astSurfaceTypes[21].st_fClimbSlopeCos = Cos(45.0f);
|
|
|
|
// contents
|
|
pwo->wo_actContentTypes[0].ct_strName = "Air";
|
|
pwo->wo_actContentTypes[0].ct_fDensity = 0.0f;
|
|
pwo->wo_actContentTypes[0].ct_fFluidFriction = 0.0f;
|
|
pwo->wo_actContentTypes[0].ct_fControlMultiplier = 1.0f;
|
|
pwo->wo_actContentTypes[0].ct_fSpeedMultiplier = 1.0f;
|
|
pwo->wo_actContentTypes[0].ct_fDrowningDamageAmount = 10.0f;
|
|
pwo->wo_actContentTypes[0].ct_tmDrowningDamageDelay = 1.0f;
|
|
pwo->wo_actContentTypes[0].ct_ulFlags = CTF_FLYABLE|CTF_BREATHABLE_LUNGS;
|
|
|
|
pwo->wo_actContentTypes[1].ct_strName = "Water";
|
|
pwo->wo_actContentTypes[1].ct_fDensity = 1000.0f;
|
|
pwo->wo_actContentTypes[1].ct_fFluidFriction = 0.0f;
|
|
pwo->wo_actContentTypes[1].ct_fControlMultiplier = 2.0f;
|
|
pwo->wo_actContentTypes[1].ct_fSpeedMultiplier = 0.75f;
|
|
pwo->wo_actContentTypes[1].ct_fDrowningDamageAmount = 10.0f;
|
|
pwo->wo_actContentTypes[1].ct_tmDrowningDamageDelay = 1.0f;
|
|
pwo->wo_actContentTypes[1].ct_ulFlags = CTF_BREATHABLE_GILLS|CTF_SWIMABLE|CTF_FADESPINNING;
|
|
|
|
pwo->wo_actContentTypes[2].ct_strName = "Lava";
|
|
pwo->wo_actContentTypes[2].ct_fDensity = 800.0f;
|
|
pwo->wo_actContentTypes[2].ct_fFluidFriction = 1.0f;
|
|
pwo->wo_actContentTypes[2].ct_fControlMultiplier = 2.0f;
|
|
pwo->wo_actContentTypes[2].ct_fSpeedMultiplier = 0.5f;
|
|
pwo->wo_actContentTypes[2].ct_fDrowningDamageAmount = 0.0f;
|
|
pwo->wo_actContentTypes[2].ct_tmDrowningDamageDelay = 1.0f;
|
|
pwo->wo_actContentTypes[2].ct_iSwimDamageType = DMT_BURNING;
|
|
pwo->wo_actContentTypes[2].ct_fSwimDamageAmount = 50.0f;
|
|
pwo->wo_actContentTypes[2].ct_tmSwimDamageFrequency = 0.25f;
|
|
pwo->wo_actContentTypes[2].ct_ulFlags = CTF_FADESPINNING;
|
|
|
|
pwo->wo_actContentTypes[3].ct_strName = "Cold Water";
|
|
pwo->wo_actContentTypes[3].ct_fDensity = 1000.0f;
|
|
pwo->wo_actContentTypes[3].ct_fFluidFriction = 0.0f;
|
|
pwo->wo_actContentTypes[3].ct_fControlMultiplier = 2.0f;
|
|
pwo->wo_actContentTypes[3].ct_fSpeedMultiplier = 0.75f;
|
|
pwo->wo_actContentTypes[3].ct_fDrowningDamageAmount = 10.0f;
|
|
pwo->wo_actContentTypes[3].ct_tmDrowningDamageDelay = 1.0f;
|
|
pwo->wo_actContentTypes[3].ct_iSwimDamageType = DMT_FREEZING;
|
|
pwo->wo_actContentTypes[3].ct_fSwimDamageAmount = 1.0f;
|
|
pwo->wo_actContentTypes[3].ct_tmSwimDamageDelay = 5.0f;
|
|
pwo->wo_actContentTypes[3].ct_tmSwimDamageFrequency = 1.0f;
|
|
pwo->wo_actContentTypes[3].ct_ulFlags = CTF_BREATHABLE_GILLS|CTF_SWIMABLE|CTF_FADESPINNING;
|
|
|
|
pwo->wo_actContentTypes[4].ct_strName = "Spikes";
|
|
pwo->wo_actContentTypes[4].ct_fDensity = 500.0f;
|
|
pwo->wo_actContentTypes[4].ct_fFluidFriction = 0.5f;
|
|
pwo->wo_actContentTypes[4].ct_fControlMultiplier = 1.0f;
|
|
pwo->wo_actContentTypes[4].ct_fSpeedMultiplier = 0.75f;
|
|
pwo->wo_actContentTypes[4].ct_iKillDamageType = DMT_SPIKESTAB;
|
|
pwo->wo_actContentTypes[4].ct_fKillImmersion = 0.5f;
|
|
pwo->wo_actContentTypes[4].ct_ulFlags = CTF_BREATHABLE_LUNGS|CTF_FADESPINNING;
|
|
|
|
pwo->wo_actContentTypes[5].ct_strName = "Desert heat";
|
|
pwo->wo_actContentTypes[5].ct_fDensity = 0.0f;
|
|
pwo->wo_actContentTypes[5].ct_fFluidFriction = 0.0f;
|
|
pwo->wo_actContentTypes[5].ct_fControlMultiplier = 1.0f;
|
|
pwo->wo_actContentTypes[5].ct_fSpeedMultiplier = 1.0f;
|
|
pwo->wo_actContentTypes[5].ct_iSwimDamageType = DMT_HEAT;
|
|
pwo->wo_actContentTypes[5].ct_fSwimDamageAmount = 10.0f;
|
|
pwo->wo_actContentTypes[5].ct_tmSwimDamageDelay = 10.0f;
|
|
pwo->wo_actContentTypes[5].ct_tmSwimDamageFrequency = 2.0f;
|
|
pwo->wo_actContentTypes[5].ct_ulFlags = CTF_FLYABLE|CTF_BREATHABLE_LUNGS;
|
|
|
|
pwo->wo_actContentTypes[6].ct_strName = "Lava (-10HP/SEC)";
|
|
pwo->wo_actContentTypes[6].ct_fDensity = 1000.0f;
|
|
pwo->wo_actContentTypes[6].ct_fFluidFriction = 0.0f;
|
|
pwo->wo_actContentTypes[6].ct_fControlMultiplier = 2.0f;
|
|
pwo->wo_actContentTypes[6].ct_fSpeedMultiplier = 0.75f;
|
|
pwo->wo_actContentTypes[6].ct_fDrowningDamageAmount = 0.0f;
|
|
pwo->wo_actContentTypes[6].ct_tmDrowningDamageDelay = 1.0f;
|
|
pwo->wo_actContentTypes[6].ct_iSwimDamageType = DMT_BURNING;
|
|
pwo->wo_actContentTypes[6].ct_fSwimDamageAmount = 5.0f;
|
|
pwo->wo_actContentTypes[6].ct_tmSwimDamageFrequency = 0.5f;
|
|
pwo->wo_actContentTypes[6].ct_ulFlags = CTF_SWIMABLE|CTF_FADESPINNING;
|
|
|
|
// environments
|
|
pwo->wo_aetEnvironmentTypes[ 0].et_strName = "Normal";
|
|
pwo->wo_aetEnvironmentTypes[ 0].et_iType = 1;
|
|
pwo->wo_aetEnvironmentTypes[ 0].et_fSize = 1.4f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[ 1].et_strName = "Generic";
|
|
pwo->wo_aetEnvironmentTypes[ 1].et_iType = 0;
|
|
pwo->wo_aetEnvironmentTypes[ 1].et_fSize = 7.5f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[ 2].et_strName = "Small room";
|
|
pwo->wo_aetEnvironmentTypes[ 2].et_iType = EAX_ENVIRONMENT_LIVINGROOM;
|
|
pwo->wo_aetEnvironmentTypes[ 2].et_fSize = 2.5f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[ 3].et_strName = "Medium room";
|
|
pwo->wo_aetEnvironmentTypes[ 3].et_iType = EAX_ENVIRONMENT_STONEROOM;
|
|
pwo->wo_aetEnvironmentTypes[ 3].et_fSize = 11.6f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[ 4].et_strName = "Big room";
|
|
pwo->wo_aetEnvironmentTypes[ 4].et_iType = EAX_ENVIRONMENT_AUDITORIUM;
|
|
pwo->wo_aetEnvironmentTypes[ 4].et_fSize = 21.6f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[ 5].et_strName = "Corridor";
|
|
pwo->wo_aetEnvironmentTypes[ 5].et_iType = EAX_ENVIRONMENT_HALLWAY;
|
|
pwo->wo_aetEnvironmentTypes[ 5].et_fSize = 1.8f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[ 6].et_strName = "Arena";
|
|
pwo->wo_aetEnvironmentTypes[ 6].et_iType = EAX_ENVIRONMENT_ARENA;
|
|
pwo->wo_aetEnvironmentTypes[ 6].et_fSize = 36.2f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[ 7].et_strName = "Long corridor";
|
|
pwo->wo_aetEnvironmentTypes[ 7].et_iType = EAX_ENVIRONMENT_STONECORRIDOR;
|
|
pwo->wo_aetEnvironmentTypes[ 7].et_fSize = 13.5f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[ 8].et_strName = "Small canyon";
|
|
pwo->wo_aetEnvironmentTypes[ 8].et_iType = EAX_ENVIRONMENT_QUARRY;
|
|
pwo->wo_aetEnvironmentTypes[ 8].et_fSize = 17.5f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[ 9].et_strName = "Big canyon";
|
|
pwo->wo_aetEnvironmentTypes[ 9].et_iType = EAX_ENVIRONMENT_MOUNTAINS;
|
|
pwo->wo_aetEnvironmentTypes[ 9].et_fSize = 100.0f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[10].et_strName = "Open space";
|
|
pwo->wo_aetEnvironmentTypes[10].et_iType = EAX_ENVIRONMENT_PLAIN;
|
|
pwo->wo_aetEnvironmentTypes[10].et_fSize = 42.5f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[11].et_strName = "Cave";
|
|
pwo->wo_aetEnvironmentTypes[11].et_iType = EAX_ENVIRONMENT_CAVE;
|
|
pwo->wo_aetEnvironmentTypes[11].et_fSize = 14.6f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[12].et_strName = "Sewers";
|
|
pwo->wo_aetEnvironmentTypes[12].et_iType = EAX_ENVIRONMENT_SEWERPIPE;
|
|
pwo->wo_aetEnvironmentTypes[12].et_fSize = 1.7f;
|
|
|
|
pwo->wo_aetEnvironmentTypes[13].et_strName = "Underwater";
|
|
pwo->wo_aetEnvironmentTypes[13].et_iType = EAX_ENVIRONMENT_UNDERWATER;
|
|
pwo->wo_aetEnvironmentTypes[13].et_fSize = 1.8f;
|
|
|
|
// declare console variables
|
|
_pShell->DeclareSymbol("user void MakeWorldStatistics(void);", &MakeWorldStatistics);
|
|
_pShell->DeclareSymbol("user void ReoptimizeAllBrushes(void);", &ReoptimizeAllBrushes);
|
|
_pShell->DeclareSymbol("user void DoLevelSafetyChecks(void);", &DoLevelSafetyChecks);
|
|
}
|
|
|
|
void CWorldBase_OnWorldRender(CWorld *pwo)
|
|
{
|
|
// get current tick
|
|
TIME tmNow = _pTimer->GetLerpedCurrentTick();
|
|
// wrap time to prevent texture coordinates to get unprecise
|
|
tmNow = fmod(tmNow, 600.0f); // (wrap every 10 minutes)
|
|
|
|
// transformations
|
|
// right
|
|
pwo->wo_attTextureTransformations[1].tt_mdTransformation.md_fUOffset= 128/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[2].tt_mdTransformation.md_fUOffset= 256/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[3].tt_mdTransformation.md_fUOffset= 512/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[4].tt_mdTransformation.md_fUOffset=1024/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[5].tt_mdTransformation.md_fUOffset=2048/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[6].tt_mdTransformation.md_fUOffset=4096/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[7].tt_mdTransformation.md_fUOffset=8192/1024.0f*tmNow;
|
|
|
|
// down
|
|
pwo->wo_attTextureTransformations[37].tt_mdTransformation.md_fVOffset= 128/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[38].tt_mdTransformation.md_fVOffset= 256/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[39].tt_mdTransformation.md_fVOffset= 512/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[40].tt_mdTransformation.md_fVOffset=1024/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[41].tt_mdTransformation.md_fVOffset=2048/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[42].tt_mdTransformation.md_fVOffset=4096/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[43].tt_mdTransformation.md_fVOffset=8192/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[44].tt_mdTransformation.md_fVOffset=8192*2/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[45].tt_mdTransformation.md_fVOffset=8192*4/1024.0f*tmNow;
|
|
|
|
CMappingDefinitionUI mdui;
|
|
mdui.mdui_fUStretch = 1.0f;
|
|
mdui.mdui_fVStretch = 1.0f;
|
|
mdui.mdui_fUOffset = 0.0f;
|
|
mdui.mdui_fVOffset = 0.0f;
|
|
// rotations left
|
|
mdui.mdui_aURotation = 8192*1/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = 8192*1/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[17].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = 8192*2/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = 8192*2/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[18].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = 8192*4/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = 8192*4/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[19].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = 8192*8/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = 8192*8/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[20].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = 8192*16/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = 8192*16/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[21].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = 8192*32/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = 8192*32/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[22].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = 8192*64/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = 8192*64/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[23].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = 8192*128/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = 8192*128/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[24].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = 8192*256/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = 8192*256/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[25].tt_mdTransformation.FromUI(mdui);
|
|
// rotations right
|
|
mdui.mdui_aURotation = -8192*1/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = -8192*1/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[27].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = -8192*2/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = -8192*2/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[28].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = -8192*4/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = -8192*4/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[29].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = -8192*8/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = -8192*8/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[30].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = -8192*16/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = -8192*16/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[31].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = -8192*32/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = -8192*32/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[32].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = -8192*64/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = -8192*64/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[33].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = -8192*128/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = -8192*128/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[34].tt_mdTransformation.FromUI(mdui);
|
|
mdui.mdui_aURotation = -8192*256/1024.0f*tmNow;
|
|
mdui.mdui_aVRotation = -8192*256/1024.0f*tmNow;
|
|
pwo->wo_attTextureTransformations[35].tt_mdTransformation.FromUI(mdui);
|
|
// blendings
|
|
FLOAT f = Abs(Sin(tmNow*AngleDeg(180.0f)));
|
|
pwo->wo_atbTextureBlendings[4].tb_colMultiply = RGBAToColor(f*255, f*255, f*255, 255);
|
|
pwo->wo_atbTextureBlendings[5].tb_colMultiply = C_WHITE|UBYTE(255*f);
|
|
pwo->wo_atbTextureBlendings[6].tb_colMultiply = RGBAToColor(f*255, f*255, f*255, 255);
|
|
pwo->wo_atbTextureBlendings[7].tb_colMultiply = C_WHITE|UBYTE(255*Lerp(0.5f, 1.0f, f));
|
|
|
|
pwo->wo_attTextureTransformations[11].tt_mdTransformation.md_fUOffset=Sin( tmNow*22)/30;
|
|
pwo->wo_attTextureTransformations[11].tt_mdTransformation.md_fVOffset=Cos( tmNow*26)/35;
|
|
|
|
pwo->wo_attTextureTransformations[12].tt_mdTransformation.md_fUOffset=Sin( tmNow*32)/10;
|
|
pwo->wo_attTextureTransformations[12].tt_mdTransformation.md_fVOffset=Cos( tmNow*22)/15;
|
|
|
|
pwo->wo_attTextureTransformations[13].tt_mdTransformation.md_fUOffset=Sin( tmNow*15)/7;
|
|
pwo->wo_attTextureTransformations[13].tt_mdTransformation.md_fVOffset=Cos( tmNow*25)/8;
|
|
|
|
pwo->wo_attTextureTransformations[14].tt_mdTransformation.md_fUOffset=Sin( tmNow*32)/3;
|
|
pwo->wo_attTextureTransformations[14].tt_mdTransformation.md_fVOffset=Cos( tmNow*22)/3;
|
|
|
|
pwo->wo_attTextureTransformations[15].tt_mdTransformation.md_fUOffset=Sin( tmNow*15);
|
|
pwo->wo_attTextureTransformations[15].tt_mdTransformation.md_fVOffset=Cos( tmNow*25);
|
|
|
|
// ----------- Obtain world settings controller
|
|
CWorldSettingsController *pwsc = NULL;
|
|
// obtain bcg viewer
|
|
CBackgroundViewer *penBcgViewer = (CBackgroundViewer *) pwo->GetBackgroundViewer();
|
|
if( penBcgViewer != NULL)
|
|
{
|
|
// obtain world settings controller
|
|
pwsc = (CWorldSettingsController *) &*penBcgViewer->m_penWorldSettingsController;
|
|
}
|
|
|
|
// ***** Storm effects
|
|
// if world settings controller is valid
|
|
if( pwsc != NULL)
|
|
{
|
|
FLOAT fStormFactor = pwsc->GetStormFactor();
|
|
COLOR colBlend = LerpColor( pwsc->m_colBlendStart, pwsc->m_colBlendStop, fStormFactor);
|
|
pwo->wo_atbTextureBlendings[8].tb_colMultiply = colBlend;
|
|
|
|
// set world polygon shading multiplier
|
|
COLOR colShade = LerpColor( pwsc->m_colShadeStart, pwsc->m_colShadeStop, fStormFactor);
|
|
|
|
// apply lightning FX
|
|
if( pwsc->m_tmLightningStart != -1)
|
|
{
|
|
FLOAT tmLightningLife = tmNow-pwsc->m_tmLightningStart;
|
|
_aoLightningColor.ao_tmAnimStart = pwsc->m_tmLightningStart;
|
|
COLOR colLightning = _aoLightningColor.GetFrame();
|
|
// calculate lightning power factor
|
|
UBYTE ub = UBYTE( pwsc->m_fLightningPower*255);
|
|
COLOR colFactor = RGBToColor( ub, ub, ub) | CT_OPAQUE;
|
|
colLightning = MulColors( colLightning, colFactor);
|
|
colShade = AddColors( colShade, colLightning);
|
|
}
|
|
pwo->wo_atbTextureBlendings[9].tb_colMultiply = colShade;
|
|
}
|
|
|
|
// ***** Pyramid blending effects
|
|
// if world settings controller is valid
|
|
if( pwsc != NULL)
|
|
{
|
|
// set alpha values for switch-controlled pyramid plate activating
|
|
SetPyramidPlateActivateAlpha(pwo, 10, pwsc->m_tmPyramidPlatesStart, 1e6, FALSE);
|
|
SetPyramidPlateActivateAlpha(pwo, 11, pwsc->m_tmActivatedPlate1, pwsc->m_tmDeactivatedPlate1, TRUE);
|
|
SetPyramidPlateActivateAlpha(pwo, 12, pwsc->m_tmActivatedPlate2, pwsc->m_tmDeactivatedPlate2, TRUE);
|
|
SetPyramidPlateActivateAlpha(pwo, 13, pwsc->m_tmActivatedPlate3, pwsc->m_tmDeactivatedPlate3, TRUE);
|
|
SetPyramidPlateActivateAlpha(pwo, 14, pwsc->m_tmActivatedPlate4, pwsc->m_tmDeactivatedPlate4, TRUE);
|
|
// pyramid morph room
|
|
SetPyramidMorphRoomAlpha(pwo, 15, pwsc->m_tmPyramidMorphRoomActivated);
|
|
}
|
|
};
|
|
|
|
void CWorldBase_OnInitClass(void)
|
|
{
|
|
// init particle effects
|
|
InitParticles();
|
|
try
|
|
{
|
|
// setup simple model shadow texture
|
|
_toSimpleModelShadow.SetData_t( CTFILENAME("Textures\\Effects\\Shadow\\SimpleModelShadow.tex"));
|
|
_aoLightningColor.SetData_t( CTFILENAME("Animations\\Lightning.ani"));
|
|
// we will use first animation in .ani file for lightning
|
|
_aoLightningColor.PlayAnim(0, AOF_NORESTART);
|
|
}
|
|
catch(char *strError)
|
|
{
|
|
FatalError(TRANS("Cannot load shadow texture: \n%s"), strError);
|
|
}
|
|
}
|
|
|
|
void CWorldBase_OnEndClass(void)
|
|
{
|
|
// close particle effects
|
|
CloseParticles();
|
|
}
|
|
|
|
class CFixedForce {
|
|
public:
|
|
CTString ff_strName;
|
|
class CForceStrength ff_fsGravity;
|
|
class CForceStrength ff_fsField;
|
|
|
|
inline CFixedForce(CTString strName,
|
|
FLOAT3D vDirection,
|
|
FLOAT fAcceleration,
|
|
FLOAT fVelocity)
|
|
{
|
|
ff_strName = strName;
|
|
ff_fsGravity.fs_vDirection =vDirection;
|
|
ff_fsGravity.fs_fAcceleration =fAcceleration;
|
|
ff_fsGravity.fs_fVelocity =fVelocity;
|
|
}
|
|
|
|
};
|
|
|
|
static CFixedForce affFixedForces[] =
|
|
{
|
|
CFixedForce ("Normal D", FLOAT3D( 0,-1, 0), 30, 70),
|
|
CFixedForce ("Normal U", FLOAT3D( 0,+1, 0), 30, 70),
|
|
CFixedForce ("Normal N", FLOAT3D( 0, 0,-1), 30, 70),
|
|
CFixedForce ("Normal S", FLOAT3D( 0, 0,+1), 30, 70),
|
|
CFixedForce ("Normal E", FLOAT3D(-1, 0, 0), 30, 70),
|
|
CFixedForce ("Normal W", FLOAT3D(+1, 0, 0), 30, 70),
|
|
CFixedForce ("ZeroG", FLOAT3D(+1, 0, 0), 0, 0),
|
|
CFixedForce ("Unused", FLOAT3D(+1, 0, 0), 0, 0),
|
|
CFixedForce ("Unused", FLOAT3D(+1, 0, 0), 0, 0),
|
|
CFixedForce ("Unused", FLOAT3D(+1, 0, 0), 0, 0),
|
|
};
|
|
static INDEX ctFixedForces = ARRAYCOUNT(affFixedForces);
|
|
extern void GetDefaultForce(INDEX iForce, const FLOAT3D &vPoint,
|
|
CForceStrength &fsGravity, CForceStrength &fsField)
|
|
{
|
|
if (iForce<ctFixedForces) {
|
|
fsGravity = affFixedForces[iForce].ff_fsGravity;
|
|
}
|
|
}
|
|
|
|
void CWorldBase::SetDefaultProperties(void) {
|
|
m_strName = "World Base";
|
|
m_strDescription = "";
|
|
m_bZoning = FALSE ;
|
|
m_bBackground = FALSE ;
|
|
m_bAnchored = FALSE ;
|
|
m_penGravity0 = NULL;
|
|
m_penGravity1 = NULL;
|
|
m_penGravity2 = NULL;
|
|
m_penGravity3 = NULL;
|
|
m_penGravity4 = NULL;
|
|
m_penGravity5 = NULL;
|
|
m_penGravity6 = NULL;
|
|
m_penGravity7 = NULL;
|
|
m_penGravity8 = NULL;
|
|
m_penGravity9 = NULL;
|
|
m_penFog0 = NULL;
|
|
m_penFog1 = NULL;
|
|
m_penFog2 = NULL;
|
|
m_penFog3 = NULL;
|
|
m_penFog4 = NULL;
|
|
m_penFog5 = NULL;
|
|
m_penFog6 = NULL;
|
|
m_penFog7 = NULL;
|
|
m_penFog8 = NULL;
|
|
m_penFog9 = NULL;
|
|
m_penHaze0 = NULL;
|
|
m_penHaze1 = NULL;
|
|
m_penHaze2 = NULL;
|
|
m_penHaze3 = NULL;
|
|
m_penHaze4 = NULL;
|
|
m_penMirror0 = NULL;
|
|
m_penMirror1 = NULL;
|
|
m_penMirror2 = NULL;
|
|
m_penMirror3 = NULL;
|
|
m_penMirror4 = NULL;
|
|
m_penGradient0 = NULL;
|
|
m_penGradient1 = NULL;
|
|
m_penGradient2 = NULL;
|
|
m_penGradient3 = NULL;
|
|
m_penGradient4 = NULL;
|
|
m_penGradient5 = NULL;
|
|
m_penGradient6 = NULL;
|
|
m_penGradient7 = NULL;
|
|
m_penGradient8 = NULL;
|
|
m_penGradient9 = NULL;
|
|
m_penGradient10 = NULL;
|
|
m_penGradient11 = NULL;
|
|
m_penGradient12 = NULL;
|
|
m_penGradient13 = NULL;
|
|
m_penGradient14 = NULL;
|
|
m_penGradient15 = NULL;
|
|
m_penGradient16 = NULL;
|
|
m_penGradient17 = NULL;
|
|
m_penGradient18 = NULL;
|
|
m_penGradient19 = NULL;
|
|
m_cbClassificationBits = 0;
|
|
m_vbVisibilityBits = 0;
|
|
m_fOpacity = 1.0f;
|
|
CEntity::SetDefaultProperties();
|
|
}
|
|
|
|
#line 1003 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ULONG CWorldBase::GetVisTweaks(void)
|
|
#line 1004 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1005 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return m_cbClassificationBits | m_vbVisibilityBits ;
|
|
#line 1006 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1009 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
BOOL CWorldBase::IsTargetValid(SLONG slPropertyOffset,CEntity * penTarget)
|
|
#line 1010 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1011 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(penTarget == NULL )
|
|
#line 1012 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1013 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return FALSE ;
|
|
#line 1014 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1016 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ULONG ulFirst , ulLast ;
|
|
#line 1017 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CTString strClass ;
|
|
#line 1020 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ulFirst = offsetof (CWorldBase , m_penGradient0 );
|
|
#line 1021 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ulLast = offsetof (CWorldBase , m_penGradient19 );
|
|
#line 1022 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
strClass = "Gradient Marker";
|
|
#line 1023 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if((slPropertyOffset >= ulFirst ) && (slPropertyOffset <= ulLast )){
|
|
#line 1024 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return (IsDerivedFromClass (penTarget , strClass ));
|
|
#line 1025 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1028 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ulFirst = offsetof (CWorldBase , m_penGravity0 );
|
|
#line 1029 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ulLast = offsetof (CWorldBase , m_penGravity9 );
|
|
#line 1030 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if((slPropertyOffset >= ulFirst ) && (slPropertyOffset <= ulLast )){
|
|
#line 1031 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return
|
|
#line 1032 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
IsDerivedFromClass (penTarget , "Gravity Marker") ||
|
|
#line 1033 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
IsDerivedFromClass (penTarget , "Gravity Router");
|
|
#line 1034 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1037 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ulFirst = offsetof (CWorldBase , m_penMirror0 );
|
|
#line 1038 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ulLast = offsetof (CWorldBase , m_penMirror4 );
|
|
#line 1039 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
strClass = "Mirror Marker";
|
|
#line 1040 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if((slPropertyOffset >= ulFirst ) && (slPropertyOffset <= ulLast )){
|
|
#line 1041 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return (IsDerivedFromClass (penTarget , strClass ));
|
|
#line 1042 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1045 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ulFirst = offsetof (CWorldBase , m_penFog0 );
|
|
#line 1046 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ulLast = offsetof (CWorldBase , m_penFog9 );
|
|
#line 1047 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
strClass = "Fog Marker";
|
|
#line 1048 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if((slPropertyOffset >= ulFirst ) && (slPropertyOffset <= ulLast )){
|
|
#line 1049 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return (IsDerivedFromClass (penTarget , strClass ));
|
|
#line 1050 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1053 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ulFirst = offsetof (CWorldBase , m_penHaze0 );
|
|
#line 1054 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
ulLast = offsetof (CWorldBase , m_penHaze4 );
|
|
#line 1055 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
strClass = "Haze Marker";
|
|
#line 1056 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if((slPropertyOffset >= ulFirst ) && (slPropertyOffset <= ulLast )){
|
|
#line 1057 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return (IsDerivedFromClass (penTarget , strClass ));
|
|
#line 1058 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1060 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return CEntity :: IsTargetValid (slPropertyOffset , penTarget );
|
|
#line 1061 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1064 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
const CTString & CWorldBase::GetForceName(INDEX iForce)
|
|
#line 1065 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1066 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
static const CTString strDummyName ("");
|
|
#line 1067 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
static const CTString strMarkerUnused ("Marker not set");
|
|
#line 1068 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctGravityMarkers = & m_penGravity9 - & m_penGravity0 + 1;
|
|
#line 1070 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iForce < ctFixedForces ){
|
|
#line 1071 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return affFixedForces [ iForce ] . ff_strName ;
|
|
#line 1072 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}else {
|
|
#line 1073 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iForce - ctFixedForces <= ctGravityMarkers ){
|
|
#line 1074 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CEntity * pen = & * (& m_penGravity0 ) [ iForce - ctFixedForces ];
|
|
#line 1075 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(pen != NULL ){
|
|
#line 1076 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return pen -> GetForceName (0);
|
|
#line 1077 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}else {
|
|
#line 1078 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return strMarkerUnused ;
|
|
#line 1079 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1081 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1082 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return strDummyName ;
|
|
#line 1083 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1084 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1086 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
void CWorldBase::GetForce(INDEX iForce,const FLOAT3D & vPoint,
|
|
#line 1087 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CForceStrength & fsGravity,CForceStrength & fsField)
|
|
#line 1088 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1089 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctGravityMarkers = & m_penGravity9 - & m_penGravity0 + 1;
|
|
#line 1090 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iForce < ctFixedForces ){
|
|
#line 1091 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
fsGravity = affFixedForces [ iForce ] . ff_fsGravity ;
|
|
#line 1092 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}else {
|
|
#line 1093 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iForce - ctFixedForces < ctGravityMarkers ){
|
|
#line 1094 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CEntity * pen = & * (& m_penGravity0 ) [ iForce - ctFixedForces ];
|
|
#line 1095 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(pen != NULL ){
|
|
#line 1096 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
pen -> GetForce (0 , vPoint , fsGravity , fsField );
|
|
#line 1097 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return ;
|
|
#line 1098 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1099 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1100 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
fsGravity . fs_fAcceleration = 30;
|
|
#line 1101 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
fsGravity . fs_fVelocity = 70;
|
|
#line 1102 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
fsGravity . fs_vDirection = FLOAT3D (1 , 0 , 0);
|
|
#line 1103 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1104 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
fsField . fs_fAcceleration = 0;
|
|
#line 1105 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
fsField . fs_fVelocity = 0;
|
|
#line 1106 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1109 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CEntity * CWorldBase::GetForceController(INDEX iForce)
|
|
#line 1110 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1111 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctGravityMarkers = & m_penGravity9 - & m_penGravity0 + 1;
|
|
#line 1112 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iForce < ctFixedForces ){
|
|
#line 1113 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return NULL ;
|
|
#line 1114 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}else {
|
|
#line 1115 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iForce - ctFixedForces < ctGravityMarkers ){
|
|
#line 1116 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CEntity * pen = & * (& m_penGravity0 ) [ iForce - ctFixedForces ];
|
|
#line 1117 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(pen != NULL ){
|
|
#line 1118 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return pen -> GetForceController (0);
|
|
#line 1119 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1120 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1121 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1122 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return NULL ;
|
|
#line 1123 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1125 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
const CTString & CWorldBase::GetFogName(INDEX iFog)
|
|
#line 1126 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1127 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctFogMarkers = & m_penFog9 - & m_penFog0 + 1;
|
|
#line 1128 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
static const CTString strDummyName ("");
|
|
#line 1129 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
static const CTString strMarkerUnused ("Marker not set");
|
|
#line 1130 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iFog < ctFogMarkers ){
|
|
#line 1131 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CFogMarker * pfm = (CFogMarker *) & * (& m_penFog0 ) [ iFog ];
|
|
#line 1132 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(pfm != NULL ){
|
|
#line 1133 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return pfm -> GetFogName ();
|
|
#line 1134 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}else {
|
|
#line 1135 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return strMarkerUnused ;
|
|
#line 1136 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1137 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1138 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return strDummyName ;
|
|
#line 1139 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1141 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
BOOL CWorldBase::GetFog(INDEX iFog,class CFogParameters & fpFog)
|
|
#line 1142 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1143 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctFogMarkers = & m_penFog8 - & m_penFog0 + 1;
|
|
#line 1144 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iFog < ctFogMarkers ){
|
|
#line 1145 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CFogMarker * pfm = (CFogMarker *) & * (& m_penFog0 ) [ iFog ];
|
|
#line 1146 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(pfm != NULL ){
|
|
#line 1147 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
pfm -> GetFog (fpFog );
|
|
#line 1148 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return TRUE ;
|
|
#line 1149 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1150 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1151 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return FALSE ;
|
|
#line 1152 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1155 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
const CTString & CWorldBase::GetHazeName(INDEX iHaze)
|
|
#line 1156 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1157 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctHazeMarkers = & m_penHaze4 - & m_penHaze0 + 1;
|
|
#line 1158 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
static const CTString strDummyName ("");
|
|
#line 1159 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
static const CTString strMarkerUnused ("Marker not set");
|
|
#line 1160 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iHaze < ctHazeMarkers ){
|
|
#line 1161 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CHazeMarker * pfm = (CHazeMarker *) & * (& m_penHaze0 ) [ iHaze ];
|
|
#line 1162 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(pfm != NULL ){
|
|
#line 1163 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return pfm -> GetHazeName ();
|
|
#line 1164 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}else {
|
|
#line 1165 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return strMarkerUnused ;
|
|
#line 1166 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1167 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1168 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return strDummyName ;
|
|
#line 1169 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1172 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
BOOL CWorldBase::GetHaze(INDEX iHaze,class CHazeParameters & hpHaze,FLOAT3D & vViewDir)
|
|
#line 1173 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1174 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctHazeMarkers = & m_penHaze4 - & m_penHaze0 + 1;
|
|
#line 1175 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iHaze < ctHazeMarkers ){
|
|
#line 1176 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CHazeMarker * phm = (CHazeMarker *) & * (& m_penHaze0 ) [ iHaze ];
|
|
#line 1177 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(phm != NULL ){
|
|
#line 1178 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
phm -> GetHaze (hpHaze , vViewDir );
|
|
#line 1179 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return TRUE ;
|
|
#line 1180 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1181 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1182 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return FALSE ;
|
|
#line 1183 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1186 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
const CTString & CWorldBase::GetMirrorName(INDEX iMirror)
|
|
#line 1187 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1188 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
static const CTString strDummyName ("");
|
|
#line 1189 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
static const CTString strMarkerUnused ("Marker not set");
|
|
#line 1190 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iMirror == 0){
|
|
#line 1191 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return strDummyName ;
|
|
#line 1192 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1194 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
switch(iMirror ){
|
|
#line 1195 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
case 1: {static const CTString str ("std mirror 1");return str ;};break ;
|
|
#line 1196 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
case 2: {static const CTString str ("std mirror 2");return str ;};break ;
|
|
#line 1197 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
case 3: {static const CTString str ("std mirror 3");return str ;};break ;
|
|
#line 1198 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
case 4: {static const CTString str ("std mirror 4");return str ;};break ;
|
|
#line 1199 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
case 5: {static const CTString str ("std mirror 5");return str ;};break ;
|
|
#line 1200 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
case 6: {static const CTString str ("std mirror 6");return str ;};break ;
|
|
#line 1201 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
case 7: {static const CTString str ("std mirror 7");return str ;};break ;
|
|
#line 1202 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
case 8: {static const CTString str ("std mirror 8");return str ;};break ;
|
|
#line 1203 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
default :{
|
|
#line 1204 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
iMirror -= 9;
|
|
#line 1205 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctMirrorMarkers = & m_penMirror4 - & m_penMirror0 + 1;
|
|
#line 1206 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iMirror < ctMirrorMarkers ){
|
|
#line 1207 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CMirrorMarker * pfm = (CMirrorMarker *) & * (& m_penMirror0 ) [ iMirror ];
|
|
#line 1208 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(pfm != NULL ){
|
|
#line 1209 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return pfm -> GetMirrorName ();
|
|
#line 1210 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}else {
|
|
#line 1211 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return strMarkerUnused ;
|
|
#line 1212 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1213 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1214 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1215 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1216 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return strDummyName ;
|
|
#line 1217 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1220 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
BOOL CWorldBase::GetMirror(INDEX iMirror,class CMirrorParameters & mpMirror)
|
|
#line 1221 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1222 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iMirror == 0){
|
|
#line 1223 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return FALSE ;
|
|
#line 1224 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1225 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iMirror >= 1 && iMirror <= 8){
|
|
#line 1226 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
mpMirror . mp_ulFlags = 0;
|
|
#line 1227 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return TRUE ;
|
|
#line 1228 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1229 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
iMirror -= 9;
|
|
#line 1230 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctMirrorMarkers = & m_penMirror4 - & m_penMirror0 + 1;
|
|
#line 1231 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iMirror < ctMirrorMarkers ){
|
|
#line 1232 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CMirrorMarker * pmm = (CMirrorMarker *) & * (& m_penMirror0 ) [ iMirror ];
|
|
#line 1233 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(pmm != NULL ){
|
|
#line 1234 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
pmm -> GetMirror (mpMirror );
|
|
#line 1235 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return TRUE ;
|
|
#line 1236 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1237 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1238 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return FALSE ;
|
|
#line 1239 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1242 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
const CTString & CWorldBase::GetGradientName(INDEX iGradient)
|
|
#line 1243 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1244 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctGradientMarkers = & m_penGradient19 - & m_penGradient0 + 1;
|
|
#line 1245 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
static const CTString strDummyName ("");
|
|
#line 1246 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
static const CTString strMarkerUnused ("Marker not set");
|
|
#line 1247 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(iGradient < ctGradientMarkers ){
|
|
#line 1248 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CGradientMarker * pgm = (CGradientMarker *) & * (& m_penGradient0 ) [ iGradient ];
|
|
#line 1249 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(pgm != NULL ){
|
|
#line 1250 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return pgm -> GetGradientName ();
|
|
#line 1251 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}else {
|
|
#line 1252 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return strMarkerUnused ;
|
|
#line 1253 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1254 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1255 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return strDummyName ;
|
|
#line 1256 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1258 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
void CWorldBase::UncacheShadowsForGradient(class CGradientMarker * penDiscard)
|
|
#line 1259 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1260 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctGradientMarkers = & m_penGradient19 - & m_penGradient0 + 1;
|
|
#line 1261 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
for(INDEX iGradient = 0;iGradient < ctGradientMarkers ;iGradient ++)
|
|
#line 1262 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1263 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CGradientMarker * pgm = (CGradientMarker *) & * (& m_penGradient0 ) [ iGradient ];
|
|
#line 1264 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(pgm == penDiscard )
|
|
#line 1265 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1266 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CEntity :: UncacheShadowsForGradient (iGradient + 1);
|
|
#line 1267 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1268 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1269 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1272 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
BOOL CWorldBase::GetGradient(INDEX iGradient,class CGradientParameters & fpGradient)
|
|
#line 1273 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1274 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
INDEX ctGradientMarkers = & m_penGradient19 - & m_penGradient0 + 1;
|
|
#line 1275 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if((iGradient < ctGradientMarkers ) && (iGradient > 0)){
|
|
#line 1276 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
CGradientMarker * pgm = (CGradientMarker *) & * (& m_penGradient0 ) [ iGradient - 1 ];
|
|
#line 1277 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(pgm != NULL ){
|
|
#line 1278 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return pgm -> GetGradient (0 , fpGradient );
|
|
#line 1279 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1280 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1281 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return FALSE ;
|
|
#line 1282 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1285 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
BOOL CWorldBase::HandleEvent(const CEntityEvent & ee)
|
|
#line 1286 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1288 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(ee . ee_slEvent == EVENTCODE_EFirstWorldBase ){
|
|
#line 1289 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SetFlags (GetFlags () | ENF_ZONING );
|
|
#line 1290 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
m_bZoning = TRUE ;
|
|
#line 1291 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SetFlags (GetFlags () | ENF_ANCHORED );
|
|
#line 1292 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
m_bAnchored = TRUE ;
|
|
#line 1293 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return TRUE ;
|
|
#line 1294 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1295 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return FALSE ;
|
|
#line 1296 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1300 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SLONG CWorldBase::GetUsedMemory(void)
|
|
#line 1301 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1303 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SLONG slUsedMemory = sizeof (CWorldBase ) - sizeof (CEntity ) + CEntity :: GetUsedMemory ();
|
|
#line 1305 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
slUsedMemory += m_strName . Length ();
|
|
#line 1306 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
slUsedMemory += m_strDescription . Length ();
|
|
#line 1307 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return slUsedMemory ;
|
|
#line 1308 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
|
|
#line 1312 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
FLOAT CWorldBase::GetOpacity(void)
|
|
#line 1313 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
{
|
|
#line 1314 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return m_fOpacity ;
|
|
#line 1315 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
BOOL CWorldBase::
|
|
#line 1322 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
Main(const CEntityEvent &__eeInput) {
|
|
#undef STATE_CURRENT
|
|
#define STATE_CURRENT STATE_CWorldBase_Main
|
|
ASSERTMSG(__eeInput.ee_slEvent==EVENTCODE_EVoid, "CWorldBase::Main expects 'EVoid' as input!"); const EVoid &evoid = (const EVoid &)__eeInput;
|
|
#line 1325 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
InitAsBrush ();
|
|
#line 1326 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SetPhysicsFlags (EPF_BRUSH_FIXED );
|
|
#line 1327 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SetCollisionFlags (ECF_BRUSH );
|
|
#line 1330 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(m_bZoning ){
|
|
#line 1331 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
m_strDescription = "zoning";
|
|
#line 1332 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SetFlags (GetFlags () | ENF_ZONING );
|
|
#line 1333 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}else {
|
|
#line 1334 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
m_strDescription = "non zoning";
|
|
#line 1335 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SetFlags (GetFlags () & ~ ENF_ZONING );
|
|
#line 1336 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1339 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(m_bBackground ){
|
|
#line 1340 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
m_strDescription += " background";
|
|
#line 1341 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SetFlags (GetFlags () | ENF_BACKGROUND );
|
|
#line 1342 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}else {
|
|
#line 1343 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SetFlags (GetFlags () & ~ ENF_BACKGROUND );
|
|
#line 1344 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1347 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
if(m_bAnchored ){
|
|
#line 1348 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
m_strDescription += " anchored";
|
|
#line 1349 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SetFlags (GetFlags () | ENF_ANCHORED );
|
|
#line 1350 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}else {
|
|
#line 1351 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
SetFlags (GetFlags () & ~ ENF_ANCHORED );
|
|
#line 1352 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
}
|
|
#line 1354 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
Return(STATE_CURRENT,EVoid());
|
|
#line 1354 "D:/SE1_GPL/Sources/EntitiesMP/WorldBase.es"
|
|
return TRUE; ASSERT(FALSE); return TRUE;}; |