diff --git a/src/main/java/electrosphere/engine/profiler/Profiler.java b/src/main/java/electrosphere/engine/profiler/Profiler.java index e45bccf9..fe0c1fda 100644 --- a/src/main/java/electrosphere/engine/profiler/Profiler.java +++ b/src/main/java/electrosphere/engine/profiler/Profiler.java @@ -9,11 +9,15 @@ import org.lwjgl.util.remotery.Remotery; */ public class Profiler { - //controls whether to profile or not - //!!WARNING!!: when this is turned on, testing can behave weirdly!! IE GET STUCK! + /** + * Controls whether to profile or not + * !!WARNING!!: when this is turned on, testing can behave weirdly!! IE GET STUCK! + */ public static boolean PROFILE = false; - //pointer to the global instance + /** + * Pointer to the global instance + */ long pointer = -1; /** diff --git a/src/main/java/electrosphere/entity/state/movement/groundmove/ClientGroundMovementTree.java b/src/main/java/electrosphere/entity/state/movement/groundmove/ClientGroundMovementTree.java index c69dd824..aae799c1 100644 --- a/src/main/java/electrosphere/entity/state/movement/groundmove/ClientGroundMovementTree.java +++ b/src/main/java/electrosphere/entity/state/movement/groundmove/ClientGroundMovementTree.java @@ -296,6 +296,7 @@ public class ClientGroundMovementTree implements BehaviorTree { default: break; } + Globals.clientConnection.release(message); } // System.out.println(movementVector + " " + velocity * Main.deltaTime); diff --git a/src/main/java/electrosphere/net/client/ClientNetworking.java b/src/main/java/electrosphere/net/client/ClientNetworking.java index c1a311d6..4bc57292 100644 --- a/src/main/java/electrosphere/net/client/ClientNetworking.java +++ b/src/main/java/electrosphere/net/client/ClientNetworking.java @@ -167,7 +167,6 @@ public class ClientNetworking implements Runnable { //create parser parser = new NetworkParser(inputStream,outputStream); - parser.getMessagePool().setAlwaysAllocate(true); @@ -321,6 +320,14 @@ public class ClientNetworking implements Runnable { parser.addOutgoingMessage(message); } + /** + * Releases a network message to the object pool + * @param message The message + */ + public void release(NetworkMessage message){ + this.parser.release(message); + } + /** * Gets the message protocol * @return The message protocol inside this object diff --git a/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java b/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java index f5334342..6a4a8762 100644 --- a/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java +++ b/src/main/java/electrosphere/net/client/protocol/EntityProtocol.java @@ -68,7 +68,7 @@ public class EntityProtocol implements ClientProtocolTemplate { // SPAWNING STUFF IN // // - case CREATE: + case CREATE: { LoggerInterface.loggerNetworking.DEBUG( "Spawn ID " + message.getentityID() + " of type " + message.getentityCategory() + " subtype " + message.getentitySubtype() + " @ " + message.getpositionX() + " " + message.getpositionY() + " " + message.getpositionZ() @@ -76,19 +76,20 @@ public class EntityProtocol implements ClientProtocolTemplate { EntityType type = EntityTypes.fromInt(message.getentityCategory()); switch(type){ case CREATURE: { - spawnCreature(message); + EntityProtocol.spawnCreature(message); } break; case ITEM: { - spawnItem(message); + EntityProtocol.spawnItem(message); } break; case FOLIAGE: { - spawnFoliage(message); + EntityProtocol.spawnFoliage(message); } break; case COMMON: { - spawnCommon(message); + EntityProtocol.spawnCommon(message); } break; } - break; + Globals.clientConnection.release(message); + } break; // // @@ -98,12 +99,13 @@ public class EntityProtocol implements ClientProtocolTemplate { case SETPROPERTY: { if(Globals.clientSceneWrapper.serverToClientMapContainsId(message.getentityID())){ if(message.getpropertyType() == 0){ - setPlayerEntity(message); + EntityProtocol.setPlayerEntity(message); } } else { //TODO: bounce message LoggerInterface.loggerNetworking.WARNING("Received property packet for entity that does not exist on client!"); } + Globals.clientConnection.release(message); } break; case ATTACHENTITYTOENTITY: { Entity child = Globals.clientSceneWrapper.getEntityFromServerId(message.getentityID()); @@ -118,6 +120,7 @@ public class EntityProtocol implements ClientProtocolTemplate { new Quaterniond() ); } + Globals.clientConnection.release(message); } break; case MOVEUPDATE: { Entity target = Globals.clientSceneWrapper.getEntityFromServerId(message.getentityID()); @@ -147,6 +150,7 @@ public class EntityProtocol implements ClientProtocolTemplate { if(entity != null){ ClientEntityUtils.destroyEntity(entity); } + Globals.clientConnection.release(message); } break; diff --git a/src/main/java/electrosphere/net/parser/net/raw/NetworkParser.java b/src/main/java/electrosphere/net/parser/net/raw/NetworkParser.java index 50dfc937..31540faa 100644 --- a/src/main/java/electrosphere/net/parser/net/raw/NetworkParser.java +++ b/src/main/java/electrosphere/net/parser/net/raw/NetworkParser.java @@ -1,7 +1,7 @@ -package electrosphere.net.parser.net.raw; - -import electrosphere.net.parser.net.message.MessagePool; -import electrosphere.net.parser.net.message.NetworkMessage; +package electrosphere.net.parser.net.raw; + +import electrosphere.net.parser.net.message.MessagePool; +import electrosphere.net.parser.net.message.NetworkMessage; import io.github.studiorailgun.CircularByteBuffer; import java.io.IOException; import java.io.InputStream; diff --git a/src/main/java/electrosphere/net/server/ServerConnectionHandler.java b/src/main/java/electrosphere/net/server/ServerConnectionHandler.java index 828c0ffa..575792df 100644 --- a/src/main/java/electrosphere/net/server/ServerConnectionHandler.java +++ b/src/main/java/electrosphere/net/server/ServerConnectionHandler.java @@ -129,7 +129,6 @@ public class ServerConnectionHandler implements Runnable { if(this.local){ //run if serverconnectionHandler is created by passing in input/output streams networkParser = new NetworkParser(inputStream,outputStream); - networkParser.getMessagePool().setAlwaysAllocate(true); messageProtocol = new MessageProtocol(this); } else { //run if ServerConnectionHandler is created by passing in a socket diff --git a/src/main/java/electrosphere/net/synchronization/client/ClientSynchronizationManager.java b/src/main/java/electrosphere/net/synchronization/client/ClientSynchronizationManager.java index 9e82c6c4..cd036201 100644 --- a/src/main/java/electrosphere/net/synchronization/client/ClientSynchronizationManager.java +++ b/src/main/java/electrosphere/net/synchronization/client/ClientSynchronizationManager.java @@ -32,13 +32,19 @@ import electrosphere.net.synchronization.enums.FieldIdEnums; */ public class ClientSynchronizationManager { - //The list of messages to loop through + /** + * The list of messages to loop through + */ List messages = new CopyOnWriteArrayList(); - //Map that tracks the number of times a network message bounces + /** + * Map that tracks the number of times a network message bounces + */ Map messageBounceCount = new HashMap(); - //the count at which to warn about a message bouncing + /** + * The count at which to warn about a message bouncing + */ static final int MESSAGE_BOUNCE_WARNING_COUNT = 10; /** @@ -77,13 +83,13 @@ public class ClientSynchronizationManager { int bTreeId = message.getbTreeId(); int entityId = message.getentityId(); Entity targetEntity = Globals.clientSceneWrapper.getEntityFromServerId(entityId); - updateEntityState(targetEntity,bTreeId,message); + this.updateEntityState(targetEntity,bTreeId,message); } break; case SERVERNOTIFYBTREETRANSITION: { int bTreeId = message.getbTreeId(); int entityId = message.getentityId(); Entity targetEntity = Globals.clientSceneWrapper.getEntityFromServerId(entityId); - transitionBTree(targetEntity, bTreeId, message); + this.transitionBTree(targetEntity, bTreeId, message); } break; case ATTACHTREE:{ // int bTreeId = message.getbTreeId(); @@ -135,6 +141,7 @@ public class ClientSynchronizationManager { } for(SynchronizationMessage message : messagesToClear){ messages.remove(message); + Globals.clientConnection.release(message); } }