Fix for 0000005: Vehicles not generating unless player moves

This commit is contained in:
CharonInferar
2014-07-07 01:20:01 +02:00
parent 837de12841
commit ee2941581a
+23
View File
@@ -22,10 +22,13 @@
package services.pet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.LongAdder;
import org.apache.commons.collections.CollectionUtils;
import protocol.swg.UpdateContainmentMessage;
import main.NGECore;
import resources.common.OutOfBand;
@@ -42,6 +45,7 @@ import engine.clientdata.ClientFileManager;
import engine.clientdata.visitors.DatatableVisitor;
import engine.resources.container.Traverser;
import engine.resources.objects.SWGObject;
import engine.resources.scene.Planet;
import engine.resources.service.INetworkDispatch;
import engine.resources.service.INetworkRemoteEvent;
@@ -264,6 +268,25 @@ public class MountService implements INetworkDispatch {
});
player.setCallingCompanion(false);
// Make the vehicle visible
List<SWGObject> newAwareObjects = core.simulationService.get(actor.getPlanet(), actor.getWorldPosition().x, actor.getWorldPosition().z, 512);
ArrayList<SWGObject> oldAwareObjects = new ArrayList<SWGObject>(actor.getAwareObjects());
@SuppressWarnings("unchecked") Collection<SWGObject> updateAwareObjects = CollectionUtils.intersection(oldAwareObjects, newAwareObjects);
for(int i = 0; i < newAwareObjects.size(); i++) {
SWGObject obj = newAwareObjects.get(i);
//System.out.println(obj.getTemplate());
if(!updateAwareObjects.contains(obj) && obj != actor && !actor.getAwareObjects().contains(obj) && obj.getContainer() != actor && obj.isInQuadtree()) {
if(obj.getAttachment("bigSpawnRange") == null && obj.getWorldPosition().getDistance2D(actor.getWorldPosition()) > 200)
continue;
actor.makeAware(obj);
if(obj.getClient() != null)
obj.makeAware(actor);
}
}
}
private void callMount(CreatureObject actor, SWGObject pcd, PlayerObject player, CreatureObject mount) {