Reuse of Iterator for knownlists.
This commit is contained in:
@ -16,6 +16,7 @@
|
||||
*/
|
||||
package com.l2jmobius.gameserver.model.actor.knownlist;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -122,25 +123,30 @@ public class CharKnownList extends ObjectKnownList
|
||||
{
|
||||
if (!fullCheck)
|
||||
{
|
||||
for (L2PcInstance player : getKnownPlayers().values())
|
||||
final Iterator<L2PcInstance> pIter = getKnownPlayers().values().iterator();
|
||||
while (pIter.hasNext())
|
||||
{
|
||||
final L2PcInstance player = pIter.next();
|
||||
if (player == null)
|
||||
{
|
||||
removeKnownObject(player, true);
|
||||
pIter.remove();
|
||||
}
|
||||
else if (!player.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(player), getActiveObject(), player, true))
|
||||
{
|
||||
pIter.remove();
|
||||
removeKnownObject(player, true);
|
||||
getKnownRelations().remove(player.getObjectId());
|
||||
getKnownObjects().remove(player.getObjectId());
|
||||
}
|
||||
}
|
||||
|
||||
for (L2Summon summon : getKnownSummons().values())
|
||||
final Iterator<L2Summon> sIter = getKnownSummons().values().iterator();
|
||||
while (sIter.hasNext())
|
||||
{
|
||||
final L2Summon summon = sIter.next();
|
||||
if (summon == null)
|
||||
{
|
||||
removeKnownObject(summon, true);
|
||||
sIter.remove();
|
||||
}
|
||||
else if (getActiveChar().isPlayer() && (summon.getOwner() == getActiveChar()))
|
||||
{
|
||||
@ -148,6 +154,7 @@ public class CharKnownList extends ObjectKnownList
|
||||
}
|
||||
else if (!summon.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(summon), getActiveObject(), summon, true))
|
||||
{
|
||||
sIter.remove();
|
||||
removeKnownObject(summon, true);
|
||||
getKnownObjects().remove(summon.getObjectId());
|
||||
}
|
||||
@ -156,14 +163,17 @@ public class CharKnownList extends ObjectKnownList
|
||||
return;
|
||||
}
|
||||
// Go through knownObjects
|
||||
for (L2Object object : getKnownObjects().values())
|
||||
final Iterator<L2Object> oIter = getKnownObjects().values().iterator();
|
||||
while (oIter.hasNext())
|
||||
{
|
||||
final L2Object object = oIter.next();
|
||||
if (object == null)
|
||||
{
|
||||
removeKnownObject(object, true);
|
||||
oIter.remove();
|
||||
}
|
||||
else if (!object.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(object), getActiveObject(), object, true))
|
||||
{
|
||||
oIter.remove();
|
||||
removeKnownObject(object, true);
|
||||
|
||||
if (object.isPlayer())
|
||||
|
@ -16,6 +16,7 @@
|
||||
*/
|
||||
package com.l2jmobius.gameserver.model.actor.knownlist;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@ -158,8 +159,10 @@ public class ObjectKnownList
|
||||
*/
|
||||
public void forgetObjects(boolean fullCheck)
|
||||
{
|
||||
for (L2Object object : getKnownObjects().values())
|
||||
final Iterator<L2Object> oIter = getKnownObjects().values().iterator();
|
||||
while (oIter.hasNext())
|
||||
{
|
||||
final L2Object object = oIter.next();
|
||||
if (!fullCheck && !object.isPlayable())
|
||||
{
|
||||
continue;
|
||||
@ -168,6 +171,7 @@ public class ObjectKnownList
|
||||
// Remove all objects invisible or too far
|
||||
if (!object.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(object), getActiveObject(), object, true))
|
||||
{
|
||||
oIter.remove();
|
||||
removeKnownObject(object, true);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user