DiTerrainMap::DiTerrainMap(DiSceneManager* sm) : mVertexDecl(NULL), mVertexBuffer(NULL), mDesc(NULL), mMaxHeight(-10000000), mMinHeight(10000000), mWaterMap(NULL), mFoliageMap(NULL), mRoot(NULL), mCreator(sm) { SetShadowCastEnable(false); CreateVertexDecl(); }
bool Init() { // Only truly initialize on the first volumetric light ++m_nRefCount; if (m_nRefCount > 1) return true; // Setup any console variables if (!g_cvarEnableVolumetricLight.IsInitted()) { g_cvarEnableVolumetricLight.Init(g_pLTClient, "EnableVolumetricLight", NULL, 1.0f); g_cvarVolumetricLightSlices.Init(g_pLTClient, "VolumetricLightSlices", NULL, DEFAULT_SLICES); g_cvarVolumetricLightSliceRes.Init(g_pLTClient, "VolumetricLightSliceRes", NULL, 320.0f); g_cvarVolumetricLightShadow.Init(g_pLTClient, "VolumetricLightShadow", NULL, 1.0f); g_cvarVolumetricLightShadowRes.Init(g_pLTClient, "VolumetricLightShadowSize", NULL, 128.0f); g_cvarVolumetricLightNoise.Init(g_pLTClient, "VolumetricLightNoise", NULL, 1.0f); g_cvarVolumetricLightFloat.Init(g_pLTClient, "VolumetricLightFloat", NULL, 1.0f); } if (!DATABASE_CATEGORY(VolumetricLight).Init()) { Term(); return false; } if (!CreateVertexDecl()) { Term(); return false; } if (!CreateMaterials()) { Term(); return false; } if (!CreateShellIB()) { Term(); return false; } return true; }