Esempio n. 1
0
void QueryClusterer::UpdateCluster() {
  // This function needs to be scheduled periodically for updating the clusters
  // Update the feature vectors of all templates, update new and existing
  // templates and merge the clusters
  UpdateFeatures();
  UpdateExistingTemplates();
  MergeClusters();
}
Esempio n. 2
0
void EventBatchHandler::UpdateObjects() {
	{ 
		GML_STDMUTEX_LOCK(runit); // UpdateObjects

		UpdateUnits();
	}
	{
		GML_STDMUTEX_LOCK(rfeat); // UpdateObjects

		UpdateFeatures();
	}
	{
		GML_STDMUTEX_LOCK(rproj); // UpdateObjects

		UpdateProjectiles();
	}
}
Esempio n. 3
0
// Object bearbeiten ----------------------------------------------------------
int end_previous_object (void) 
{
long irc = 0L;

	lgi++;		/* Geometriezaehler korrigieren */
	if (lgi < koord_paare)
		return (db_error (EGCNT, ASCPARSER, yylineno));

// bevor irgend etwas passiert Header neu einlesen
	if (g_fReReadHeader) {
		DEXN_ReReadHeader();
		DEXN_ReScale();
		g_fReReadHeader = false;		// nur einmal
	}

// auswerten ob Komplexobjekt 
	if (lgi == 0) {
		if (RelCount() == 0)
			return db_error (EBADKO, ASCPARSER, yylineno);
		if (!r_flag)
			return EOKAY;	// keine Relationen, keine KomplexObjekte
		sta[0] = K_OBJEKT;	// Status setzen
		sta[1] = 0;		
	}

HPROJECT hPr = DEX_GetDataSourceHandle();

	_ASSERTE(NULL != hPr);
	irc = CreateObject (on, id, sta, mi, lgi, gxi, gyi);
	if (g_flag) {

	// evtl. ObjectGuid setzen
		if (irc && '\0' != guid[0]) {
		OBJECTGUID OUID;

			INITSTRUCT (OUID, OBJECTGUID);
			OUID.lONr = on;
			if (SUCCEEDED(CLSIDFromString (WideString(guid), &OUID.guid))) {
			// versuchen über GUID zu finden
				if (FAILED(DEX_FindObjectFromGuidEx (hPr, OUID))) {
				// alten Guid wieder setzen
				HRESULT hr = DEX_SetObjectGuid (OUID);

//					if (FAILED(hr) && HRESULT_FROM_ERRCODE(S_DUPLICATE) == hr) {
//						TX_ASSERT(0 != OUID.lONr);		// Objekt muß existieren
//
//					// GUID bereits in GeoDB vorhanden !!??
//						irc = S_DUPLICATE;
//
//					// neu erzeugtes Objekt löschen
//						DEX_DeleteObject (on);
//						CountObjects (sta[1], false);
//
//					// Geometrie an existierendem Objekt korrigieren
//						on = OUID.lONr;					// hier spielt die Musik
//						irc = CreateObject (on, id, sta, mi, lgi, gxi, gyi);
//					}
				}
			}
		}
	} else
		irc = UpdateFeatures (hPr, on, id, sta, mi);

// evtl. zur AusgabeObjektmenge hinzufügen
	if (irc && g_Enum.IsValid())
		g_Enum -> AddItem (on);

// Protocoll, Relationen etc.
bool fBreak = false;

	if (NULL != g_pDlg) {
		if (irc) 
			g_pDlg -> SetPos (ftell (yyin), on);
		fBreak = g_pDlg -> Break();
	}

	if (fpProt) fprintf (fpProt, "Satz %5ld, Objekt %5ld: Irc = %3ld\n", satz_nr, on, irc);

	if (irc && r_flag) {
		if (RelCount()) {
		// Relationen aufbauen
		long lONr, lRCode;
		short iRTyp;

			ResetList();
			while (RetrieveNextFromList (&lONr, &lRCode, &iRTyp)) 
				CreateRelation (on, lONr, lRCode, iRTyp);
			ClearList();
		}

	// Zuordnung Objekt <--> SatzNummer für Relationen merken
		StoreInTree (on, satz_nr);
	}

return fBreak;
}