See extended.

[fixed] Characters could sometimes walk through buildings due to
unsigned object Ids
[fixed] Critical networking bugs
[fixed] Client crash whenever an object was destroyed
[added] Loading of client objects is now multithreaded.
[updated] Reworked awareness system(engine).
[fixed] lots of other small engine fixes.
This commit is contained in:
Light2
2013-08-15 18:14:36 -04:00
committed by Waverunner
parent 877fd1763c
commit e6e277fc24
11 changed files with 89 additions and 38 deletions
+4 -7
View File
@@ -269,7 +269,6 @@ public class SimulationService implements INetworkDispatch {
DataTransformWithParent dataTransform = new DataTransformWithParent();
dataTransform.deserialize(data);
//System.out.println("Movement Counter: " + dataTransform.getMovementCounter());
Client client = core.getClient((Integer) session.getAttribute("connectionId"));
if(core.objectService.getObject(dataTransform.getCellId()) == null)
@@ -438,15 +437,13 @@ public class SimulationService implements INetworkDispatch {
if(client.getParent() == null)
return;
session.suspendWrite();
CreatureObject object = (CreatureObject) client.getParent();
boolean remove = remove(object, object.getPosition().x, object.getPosition().z);
if(remove)
System.out.println("Successful quadtree remove");
if(object.getContainer() == null) {
//if(object.getContainer() == null) {
HashSet<Client> oldObservers = new HashSet<Client>(object.getObservers());
for(Iterator<Client> it = oldObservers.iterator(); it.hasNext();) {
Client observerClient = it.next();
@@ -454,9 +451,9 @@ public class SimulationService implements INetworkDispatch {
observerClient.getParent().makeUnaware(object);
}
}
} else {
object.getContainer().remove(object);
}
//} else {
// object.getContainer().remove(object);
//}
object.createTransaction(core.getCreatureODB().getEnvironment());