示例#1
0
void MapCell::Unload()
{
	//DEBUG_LOG("MapCell", "Unloading cell %u %u", _x, _y);
	ASSERT(_unloadpending);
	if(_active)
		return;

	RemoveObjects();
	_unloadpending=false;
}
示例#2
0
void MapCell::Unload()
{
    //Log.Debug("MapCell", "Unloading cell %u %u", _x, _y);
    ASSERT(_unloadpending);
    if (_active)
    {
        _unloadpending = false;
        return;
    }

    _unloadpending = false;
    RemoveObjects();
}
示例#3
0
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);
	}
}
示例#4
0
MapCell::~MapCell()
{
    RemoveObjects();
}
示例#5
0
文件: GeoEdit.cpp 项目: hkaiser/TRiAS
// --------------------------------------------------------------------------------------------
// 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