void VTerrainDecorationEntityModel::OnEditorEvent(EditorEvent_e action, VTerrain *pTerrain, void *pDataA, void *pDataB) { IVTerrainDecorationModel::OnEditorEvent(action, pTerrain, pDataA, pDataB); #ifdef WIN32 if (action==GatherLightmapFinished) { } if (action==SurfaceShaderChanged) { VisSurface_cl *pSurface = (VisSurface_cl *)pDataA; // is the sent surface part of this model? if (m_spMesh!=NULL && m_spMesh->GetSurfaceIndex(pSurface)>=0) { ReapplyShaders(); UpdateParameter(); } return; } if (action==RendererNodeChanged) { if (m_spMesh!=NULL) { ReapplyShaders(); UpdateParameter(); } return; } #endif }
BOOL VTerrainDecorationEntityModel::Reload() { #ifndef _VR_DX11 m_PerInstanceData.m_iFirstRegister = 50; // hardcoded in the shader #endif m_spMesh = Vision::Game.LoadDynamicMesh(GetFilename(),true); m_spMesh->SetAllowShaderAssignment(false); // never update shader assignment on terrain entities m_bValidState = m_spMesh!=NULL && m_spMesh->IsLoaded(); VASSERT(m_bValidState); if (Vision::Editor.IsInEditor()) { // get additional properties from editor VisCallback_cl &cb = ((VTerrainDecorationModelManager *)GetParentManager())->OnGatherModelProperties; VTerrainDecorationModelDataObject data(&cb, this); cb.TriggerCallbacks(&data); } ReapplyShaders(); // after UpdateParameter because bbox must be valid UpdateParameter(); return TRUE; }
void KeyPressed_MINUS(void) { UpdateParameter(-1.0f); }
void KeyPressed_ADD(void) { UpdateParameter(1.0f); }