void MapCell::Unload() { //DEBUG_LOG("MapCell", "Unloading cell %u %u", _x, _y); ASSERT(_unloadpending); if(_active) return; RemoveObjects(); _unloadpending=false; }
void MapCell::Unload() { //Log.Debug("MapCell", "Unloading cell %u %u", _x, _y); ASSERT(_unloadpending); if (_active) { _unloadpending = false; return; } _unloadpending = false; RemoveObjects(); }
void NWApp::CalcActor() { Camera cam = GetCame(); cam.fCamX = m_player.m_fX; cam.fCamY = m_player.m_fY; cam.fCamZ = m_player.m_fZ; cam.fCamAng = m_player.m_fAngle; SetCam(cam); if (m_player.GetMoveStatus() & MoveUp) { m_player.MoveUp(); } else if (m_player.GetMoveStatus() & MoveDown) { m_player.MoveDown(); } if (m_player.GetMoveStatus() & MoveTurnLeft) { m_player.TurnLeft(); } else if (m_player.GetMoveStatus() & MoveTurnRight) { m_player.TrunRight(); } if (m_player.GetMoveStatus()) { m_plink->SendPlayerPos(m_player.m_fX, m_player.m_fY, m_player.m_fZ, m_player.m_fAngle); } auto list = m_plink->GetObjectList(); if (list.size() > 0) { UpdateObjects(list); } auto listRemove = m_plink->GetRemoveList(); if (listRemove.size() > 0) { RemoveObjects(listRemove); } }
MapCell::~MapCell() { RemoveObjects(); }
// -------------------------------------------------------------------------------------------- // es wurde ein EditierTool ausgewählt HRESULT CGeoEditExtension::EditToolChecked (long lTool) { m_bExtActive = true; // Erweiterung wurde aktiviert try { switch (lTool) { case ID_TOOL_PUNKTEDIT: // Punktobjekt erfassen { // eine (möglicherweise bis jetzt) aktive IEditOperation abmelden if (m_wEditOper.IsValid()) { m_wEditOper->SetEditExtensionSite (NULL); m_wEditOper.Assign(NULL); if (ID_TOOL_DESIGN == m_iPrevTool) TerminateParkedOperation(); } WEditOperation wEditOper (CLSID_NewPoint); // throws_com_error THROW_FAILED_HRESULT (wEditOper->SetEditExtensionSite (this)); m_wEditOper = wEditOper; m_wTDropTarget.Assign(NULL); break; } case ID_TOOL_LINIENEDIT: // Linienobjekt erfassen { // eine (möglicherweise bis jetzt) aktive IEditOperation abmelden if (m_wEditOper.IsValid()) { m_wEditOper->SetEditExtensionSite (NULL); m_wEditOper.Assign(NULL); if (ID_TOOL_DESIGN == m_iPrevTool) TerminateParkedOperation(); } WEditOperation wEditOper (CLSID_NewLine); // throws_com_error THROW_FAILED_HRESULT (wEditOper->SetEditExtensionSite (this)); m_wEditOper = wEditOper; m_wTDropTarget.Assign(NULL); break; } case ID_TOOL_FLAECHENEDIT: // Flächenobjekt erfassen { // eine (möglicherweise bis jetzt) aktive IEditOperation abmelden if (m_wEditOper.IsValid()) { m_wEditOper->SetEditExtensionSite (NULL); m_wEditOper.Assign(NULL); if (ID_TOOL_DESIGN == m_iPrevTool) TerminateParkedOperation(); } WEditOperation wEditOper (CLSID_NewArea); // throws_com_error THROW_FAILED_HRESULT (wEditOper->SetEditExtensionSite (this)); m_wEditOper = wEditOper; m_wTDropTarget.Assign(NULL); break; } case ID_TOOL_MODIFYOBJ: // Geometrie modifizieren { // eine (möglicherweise bis jetzt) aktive IEditOperation abmelden if (m_wEditOper.IsValid()) { m_wEditOper->SetEditExtensionSite (NULL); m_wEditOper.Assign(NULL); if (ID_TOOL_DESIGN == m_iPrevTool) TerminateParkedOperation(); } WEditOperation wEditOper (CLSID_ObjectModify); // throws_com_error THROW_FAILED_HRESULT (wEditOper->SetEditExtensionSite (this)); m_wEditOper = wEditOper; m_wTDropTarget.Assign(NULL); break; } case ID_TOOL_MOVEOBJ: // Objekt kopieren/verschieben { // eine (möglicherweise bis jetzt) aktive IEditOperation abmelden if (m_wEditOper.IsValid()) { m_wEditOper->SetEditExtensionSite (NULL); m_wEditOper.Assign(NULL); if (ID_TOOL_DESIGN == m_iPrevTool) TerminateParkedOperation(); } WEditOperation wEditOper (CLSID_ObjectMove); // throws_com_error THROW_FAILED_HRESULT (wEditOper->SetEditExtensionSite (this)); m_wEditOper = wEditOper; THROW_FAILED_HRESULT (m_wEditOper->QueryInterface (IID_ITRiASDropTarget, m_wTDropTarget.ppv())); _ASSERTE (m_wTDropTarget.IsValid()); break; } case ID_TOOL_DESIGN: // Hilfslinien bilden { // Lizensierung testen #if _TRiAS_VER < 0x0400 if (0 != g_dwVer4) #endif // _TRiAS_VER < 0x0400 { VERIFYLICENSE VL; INITSTRUCT(VL, VERIFYLICENSE); VL.iMode = VERIFYMODE_LessOrEqual; VL.lLevelOrOption = CKILEVEL_PLUS; if (!DEX_VerifyLicenseLevel(VL)) return E_FAIL; } if (m_wEditOper.IsValid()) { m_wParkEditOper = m_wEditOper; m_bOpParked = true; // EditierOperation erst einmal bzw. immer noch geparkt m_wEditOper->SetEditExtensionSite (NULL); m_wEditOper.Assign(NULL); } WEditOperation wEditOper (CLSID_Designing); // throws_com_error (ab zum Konstruktor) THROW_FAILED_HRESULT (wEditOper->SetEditExtensionSite (this)); m_wEditOper = wEditOper; m_wTDropTarget.Assign(NULL); m_bVtIndicate = false; break; } case ID_TOOL_DESIGNSTOP: // Editierung auf Hilfslinien beenden { // Lizensierung testen #if _TRiAS_VER < 0x0400 if (0 != g_dwVer4) #endif // _TRiAS_VER < 0x0400 { VERIFYLICENSE VL; INITSTRUCT(VL, VERIFYLICENSE); VL.iMode = VERIFYMODE_LessOrEqual; VL.lLevelOrOption = CKILEVEL_PLUS; if (!DEX_VerifyLicenseLevel(VL)) return E_FAIL; } _ASSERTE (ID_TOOL_DESIGN == m_iPrevTool); _ASSERTE (m_wEditOper.IsValid()); DeleteRestrictLines(); m_wEditOper->InformRestrictLinesState (m_wRestrLine1, m_wRestrLine2); SetCursor (CURSFORM_CROSS); break; } default: _ASSERTE (false); } // switch } catch (_com_error& e) { // wenn Aktivierung fehlschlägt, dann das vorhergehende Tool wieder aktivieren DEX_ChangeActiveTool (m_iPrevTool); if (m_wEditOper.IsValid()) { m_wEditOper->SetEditExtensionSite (NULL); m_wEditOper.Assign(NULL); } return _COM_ERROR (e); } long lTOCnt; // Anzahl der ausgewählten Objekte m_wTopObjs->GetCount (&lTOCnt); if (lTOCnt > 0) // wenn mindestens 1 Objekt selektiert ist { if (ID_TOOL_MOVEOBJ != lTool) // und NICHT "Objekte verschiebene/kopieren" ausgewählt wurde { RemoveObjects(); // Selektion neu einlesen if (! m_bVtIndicate) { m_wTopObjs->VerticesIndicate(); // dann Stützpunkte markieren m_bVtIndicate = true; } } else if (m_bVtIndicate) { m_wTopObjs->VerticesUnIndicate(); // sonst Markierungen löschen RemoveObjects(); // Selektion neu einlesen m_bVtIndicate = false; } } return S_OK; } // EditToolChecked