Benutzer-Werkzeuge

Webseiten-Werkzeuge


utilfunctions:op_cleanup

Entities in einer bestimmten Region entfernen

opeter

Diese Funktion löscht eine gewünschte Art von Entity im angegebenen Radius. Die Anzahl ist dabei auf 16 pro angegebener Entity beschränkt. Ggf. muss dann mittels einer Schleife das Gebiet entsprechend „gesäubert“ werden.

Die Parameter (_position, _range,_entity)

_position: Ist die Position auf der man Entities entfernen will. 
_range   : Ist die Entfernung von der Position. Praktisch das Gebiet im Umkreis von _position.
_entity  : Die Entity die verschwinden soll.

Rückgabe keine. Siehe Anwendungsbeispiel.

function _OP_CleanUp(_position, _range,_entity)
	local Data = { Logic.GetEntitiesInArea( _entity, _position.X, _position.Y, _range, 20)};
	local i;
	for i=2, Data[1]+1 do
		DestroyEntity(Data[i]);
	end
end

Anwendungsbeispiele

In einer bestimmten Region (ausgehend von tPunkt) sollen alle Orangenbäume verschwinden.

_OP_CleanUp(tPunkt, 5000, Enities.XD_OrangeTree1)

Jetzt verschwinden alle Orangenbäume der Sorte XD_OrangeTree1. Da es zwei Sorten gibt müßte man noch

_OP_CleanUp(tPunkt, 5000, Enities.XD_OrangeTree2)

Dann sind alle weg. opeter

Erweitertes Anwendungsbeispiel

Bei einer größeren Anzahl von unterschiedlichen Entities, lässt sich der zu überprüfende Entity-Typ auch in einen Table packen.
Danach müssen wir die Funktion, die wir oben kennen gelernt haben entsprechend umstricken. Es muss Entity für Entity überprüft werden, welche davon in einem entsprechenden Bereich ( _range ) vorhanden ist:

function _OP_CleanUp( _position, _range, _entityTable )
	for i = 1, table.getn( _entityTable ) do
		local Data = { Logic.GetEntitiesInArea( _entityTable[i], _position.X, _position.Y, _range, 20 )};
			for k=2, Data[1]+1 do
				DestroyEntity( Data[k] );
			end
	end
end


Beispiel für Entity-Table:

myEntityTable = {
  Enities.XD_OrangeTree1,
  Enities.XD_OrangeTree2,
  Enities.XD_CherryTree,
  Enities.XD_Flower1,
  Enities.XD_Flower4,
                }

Aufruf mit:

_OP_CleanUp(tPunkt, 5000, myEntityTable)
utilfunctions/op_cleanup.txt · Zuletzt geändert: 2021/09/18 19:16 (Externe Bearbeitung)