reorganization + logging + networking fixes
This commit is contained in:
parent
375e457f81
commit
d889e6126c
@ -2,6 +2,8 @@
|
||||
"types": [
|
||||
{
|
||||
"id" : 0,
|
||||
"isCreature" : true,
|
||||
"isItem" : false,
|
||||
"modelPath" : "/Models/person1walkanim.fbx",
|
||||
"hitboxes" : [
|
||||
{
|
||||
@ -53,11 +55,15 @@
|
||||
},
|
||||
{
|
||||
"id" : 1,
|
||||
"isCreature" : true,
|
||||
"isItem" : false,
|
||||
"modelPath" : "",
|
||||
"hitboxes" : []
|
||||
},
|
||||
{
|
||||
"id" : 2,
|
||||
"isCreature" : false,
|
||||
"isItem" : true,
|
||||
"modelPath" : "/Models/katana1alt.fbx",
|
||||
"hitboxes" : [
|
||||
{
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
package electrosphere.game.state;
|
||||
package electrosphere.engine;
|
||||
|
||||
import electrosphere.controls.ControlHandler;
|
||||
import electrosphere.entity.CameraEntityUtils;
|
||||
@ -15,6 +15,9 @@ import electrosphere.game.collision.CommonWorldData;
|
||||
import electrosphere.game.state.SimulationState.SimulationStateMachine;
|
||||
import electrosphere.game.server.terrain.manager.ServerTerrainManager;
|
||||
import electrosphere.game.server.world.ServerWorldData;
|
||||
import electrosphere.game.state.AttachUtils;
|
||||
import electrosphere.game.state.SimulationState;
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.main.Globals;
|
||||
import static electrosphere.main.Globals.loadingBox;
|
||||
import electrosphere.menu.MenuUtils;
|
||||
@ -90,7 +93,7 @@ public class LoadingThread extends Thread {
|
||||
initServerGameTerrainManager();
|
||||
}
|
||||
|
||||
System.out.println("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT);
|
||||
LoggerInterface.loggerEngine.INFO("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT);
|
||||
|
||||
//init the data of the world
|
||||
if(Globals.RUN_SERVER){
|
||||
@ -136,7 +139,7 @@ public class LoadingThread extends Thread {
|
||||
Globals.RENDER_FLAG_RENDER_UI = true;
|
||||
Globals.RENDER_FLAG_RENDER_BLACK_BACKGROUND = false;
|
||||
|
||||
System.out.println("Finished loading");
|
||||
LoggerInterface.loggerEngine.INFO("Finished loading");
|
||||
|
||||
SimulationState.simulationState = SimulationStateMachine.MAIN_SIMULATION;
|
||||
Globals.controlHandler.setHandlerState(ControlHandler.ControlsState.MAIN_GAME);
|
||||
@ -200,7 +203,7 @@ public class LoadingThread extends Thread {
|
||||
Globals.RENDER_FLAG_RENDER_UI = true;
|
||||
Globals.RENDER_FLAG_RENDER_BLACK_BACKGROUND = false;
|
||||
|
||||
System.out.println("Finished loading");
|
||||
LoggerInterface.loggerEngine.INFO("Finished loading");
|
||||
|
||||
SimulationState.simulationState = SimulationStateMachine.MAIN_SIMULATION;
|
||||
Globals.controlHandler.setHandlerState(ControlHandler.ControlsState.MAIN_GAME);
|
||||
@ -6,6 +6,9 @@
|
||||
package electrosphere.entity;
|
||||
|
||||
import electrosphere.entity.state.MovementTree;
|
||||
import electrosphere.entity.types.creature.CreatureUtils;
|
||||
import electrosphere.entity.types.creature.creaturemap.CreatureType;
|
||||
import electrosphere.entity.types.item.ItemUtils;
|
||||
import electrosphere.renderer.Model;
|
||||
import electrosphere.main.Globals;
|
||||
import electrosphere.renderer.Actor;
|
||||
@ -85,5 +88,21 @@ public class EntityUtils {
|
||||
return (Actor)e.getData(EntityDataStrings.DATA_STRING_ACTOR);
|
||||
}
|
||||
|
||||
public static Entity spawnEntityFromEntityMap(int type){
|
||||
Entity rVal = null;
|
||||
CreatureType entityType = Globals.entityTypeMap.get(type);
|
||||
if(entityType.isIsCreature()){
|
||||
rVal = CreatureUtils.spawnBasicCreature(type, 0.001f, 0.05f);
|
||||
}
|
||||
if(entityType.isIsItem()){
|
||||
rVal = ItemUtils.spawnBasicItem(type);
|
||||
}
|
||||
if(rVal == null){
|
||||
System.err.println("ERROR!");
|
||||
System.err.println("The entity you are trying to spawn (type=" + type + ") is neither a creature nor an item in the entity type map!");
|
||||
System.err.println("Error occurred in spawnEntityFromEntityMap in EntityUtils");
|
||||
}
|
||||
return rVal;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -8,6 +8,8 @@ import java.util.List;
|
||||
*/
|
||||
public class CreatureType {
|
||||
int id;
|
||||
boolean isCreature;
|
||||
boolean isItem;
|
||||
String modelPath;
|
||||
List<HitboxData> hitboxes;
|
||||
|
||||
@ -34,6 +36,22 @@ public class CreatureType {
|
||||
public void setHitboxes(List<HitboxData> hitboxes) {
|
||||
this.hitboxes = hitboxes;
|
||||
}
|
||||
|
||||
public boolean isIsCreature() {
|
||||
return isCreature;
|
||||
}
|
||||
|
||||
public boolean isIsItem() {
|
||||
return isItem;
|
||||
}
|
||||
|
||||
public void setIsCreature(boolean isCreature) {
|
||||
this.isCreature = isCreature;
|
||||
}
|
||||
|
||||
public void setIsItem(boolean isItem) {
|
||||
this.isItem = isItem;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ package electrosphere.game.client.drawcell;
|
||||
import electrosphere.entity.Entity;
|
||||
import electrosphere.entity.EntityUtils;
|
||||
import electrosphere.game.terrain.processing.TerrainInterpolator;
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.main.Globals;
|
||||
import electrosphere.renderer.Model;
|
||||
import electrosphere.renderer.ModelUtils;
|
||||
@ -76,7 +77,7 @@ public class DrawCell {
|
||||
Model terrainModel = ModelUtils.createTerrainModelPrecomputedShader(heightmap, program, stride);
|
||||
String terrainModelPath = Globals.assetManager.registerModel(terrainModel);
|
||||
modelEntity = EntityUtils.spawnDrawableEntity(terrainModelPath);
|
||||
System.out.println("New cell @ " + cellX * dynamicInterpolationRatio + "," + cellY * dynamicInterpolationRatio);
|
||||
LoggerInterface.loggerRenderer.INFO("New cell @ " + cellX * dynamicInterpolationRatio + "," + cellY * dynamicInterpolationRatio);
|
||||
EntityUtils.getEntityPosition(modelEntity).set(new Vector3f(cellX * dynamicInterpolationRatio, 0.01f, cellY * dynamicInterpolationRatio));
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package electrosphere.game.client.player;
|
||||
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
|
||||
public class ClientPlayerData {
|
||||
int initialDiscretePositionX;
|
||||
int initialDiscretePositionY;
|
||||
@ -16,7 +18,7 @@ public class ClientPlayerData {
|
||||
public void setInitialDiscretePosition(int x, int y){
|
||||
initialDiscretePositionX = x;
|
||||
initialDiscretePositionY = y;
|
||||
System.out.println("Loaded");
|
||||
LoggerInterface.loggerGameLogic.INFO("Loaded client data");
|
||||
loaded = true;
|
||||
}
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@ import electrosphere.game.server.world.*;
|
||||
import electrosphere.game.server.terrain.manager.ServerTerrainManager;
|
||||
import electrosphere.game.server.world.datacell.DataCell;
|
||||
import java.util.List;
|
||||
import org.joml.Vector2f;
|
||||
import org.joml.Vector3f;
|
||||
|
||||
/**
|
||||
@ -77,5 +78,5 @@ public class ClientWorldData {
|
||||
public int convertRealToChunkSpace(float real){
|
||||
return (int)Math.floor(real / dynamicInterpolationRatio);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
45
src/main/java/electrosphere/logger/Logger.java
Normal file
45
src/main/java/electrosphere/logger/Logger.java
Normal file
@ -0,0 +1,45 @@
|
||||
package electrosphere.logger;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author amaterasu
|
||||
*/
|
||||
public class Logger {
|
||||
|
||||
public enum LogLevel {
|
||||
DEBUG,
|
||||
INFO,
|
||||
WARNING,
|
||||
ERROR,
|
||||
}
|
||||
|
||||
LogLevel level;
|
||||
|
||||
public Logger(LogLevel level){
|
||||
this.level = level;
|
||||
}
|
||||
|
||||
public void DEBUG(String message){
|
||||
if(level == LogLevel.DEBUG){
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
|
||||
public void INFO(String message){
|
||||
if(level == LogLevel.DEBUG || level == LogLevel.INFO){
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
|
||||
public void WARNING(String message){
|
||||
if(level == LogLevel.DEBUG || level == LogLevel.INFO || level == LogLevel.WARNING){
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
|
||||
public void ERROR(String message, Exception e){
|
||||
if(level == LogLevel.DEBUG || level == LogLevel.INFO || level == LogLevel.WARNING || level == LogLevel.ERROR){
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
26
src/main/java/electrosphere/logger/LoggerInterface.java
Normal file
26
src/main/java/electrosphere/logger/LoggerInterface.java
Normal file
@ -0,0 +1,26 @@
|
||||
package electrosphere.logger;
|
||||
|
||||
import electrosphere.logger.Logger.LogLevel;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author amaterasu
|
||||
*/
|
||||
public class LoggerInterface {
|
||||
|
||||
|
||||
|
||||
public static Logger loggerNetworking;
|
||||
public static Logger loggerFileIO;
|
||||
public static Logger loggerGameLogic;
|
||||
public static Logger loggerRenderer;
|
||||
public static Logger loggerEngine;
|
||||
|
||||
public static void initLoggers(){
|
||||
loggerNetworking = new Logger(LogLevel.INFO);
|
||||
loggerFileIO = new Logger(LogLevel.ERROR);
|
||||
loggerGameLogic = new Logger(LogLevel.DEBUG);
|
||||
loggerRenderer = new Logger(LogLevel.WARNING);
|
||||
loggerEngine = new Logger(LogLevel.WARNING);
|
||||
}
|
||||
}
|
||||
@ -20,7 +20,7 @@ import electrosphere.game.client.terrain.manager.ClientTerrainManager;
|
||||
import electrosphere.game.client.world.ClientWorldData;
|
||||
import electrosphere.game.collision.CommonWorldData;
|
||||
import electrosphere.game.state.AliveManager;
|
||||
import electrosphere.game.state.LoadingThread;
|
||||
import electrosphere.engine.LoadingThread;
|
||||
import electrosphere.game.server.terrain.manager.ServerTerrainManager;
|
||||
import electrosphere.game.server.world.ServerWorldData;
|
||||
import electrosphere.menu.Menu;
|
||||
|
||||
@ -13,9 +13,10 @@ import electrosphere.entity.state.MovementTree;
|
||||
import electrosphere.entity.types.hitbox.HitboxUtils;
|
||||
import electrosphere.entity.types.item.ItemUtils;
|
||||
import electrosphere.game.state.AttachUtils;
|
||||
import electrosphere.game.state.LoadingThread;
|
||||
import electrosphere.engine.LoadingThread;
|
||||
import electrosphere.game.state.SimulationState;
|
||||
import electrosphere.game.state.SimulationState.SimulationStateMachine;
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.renderer.RenderingEngine;
|
||||
import electrosphere.util.FileLoadingUtils;
|
||||
import java.util.ArrayList;
|
||||
@ -99,6 +100,9 @@ public class Main {
|
||||
//
|
||||
//
|
||||
|
||||
//initialize logging interfaces
|
||||
LoggerInterface.initLoggers();
|
||||
|
||||
//set simulation status to loading title menu
|
||||
SimulationState.simulationState = SimulationStateMachine.LOADING;
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package electrosphere.menu;
|
||||
|
||||
import electrosphere.controls.ControlHandler;
|
||||
import electrosphere.game.state.LoadingThread;
|
||||
import electrosphere.engine.LoadingThread;
|
||||
import electrosphere.main.Globals;
|
||||
import electrosphere.main.Main;
|
||||
import electrosphere.net.NetUtils;
|
||||
|
||||
@ -2,6 +2,7 @@ package electrosphere.net;
|
||||
|
||||
import electrosphere.entity.types.creature.CreatureUtils;
|
||||
import electrosphere.entity.Entity;
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.net.parser.net.message.EntityMessage;
|
||||
|
||||
/**
|
||||
@ -21,7 +22,7 @@ public class NetUtils {
|
||||
// }
|
||||
|
||||
public static EntityMessage createSetCreatureControllerIdEntityMessage(Entity e){
|
||||
System.out.println("Controller id: " + CreatureUtils.getControllerPlayerId(e));
|
||||
LoggerInterface.loggerNetworking.DEBUG("Entity " + e.getId() + " set controller id: " + CreatureUtils.getControllerPlayerId(e));
|
||||
EntityMessage rVal = EntityMessage.constructsetPropertyMessage(e.getId(), System.currentTimeMillis(), 0, CreatureUtils.getControllerPlayerId(e));
|
||||
return rVal;
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package electrosphere.net.client;
|
||||
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.util.BufferUtils;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
@ -52,7 +53,7 @@ public class ClientNetworkMessage {
|
||||
byteQueue.remove(0);
|
||||
int id = BufferUtils.popIntFromByteQueue(byteQueue);
|
||||
int type = BufferUtils.popIntFromByteQueue(byteQueue);
|
||||
System.out.println("Create entity id:" + id + " type:" + type);
|
||||
LoggerInterface.loggerNetworking.INFO("Create entity id:" + id + " type:" + type);
|
||||
break;
|
||||
case ENTITY_DELETE:
|
||||
break;
|
||||
|
||||
@ -3,6 +3,7 @@ package electrosphere.net.client;
|
||||
import electrosphere.entity.types.creature.CreatureUtils;
|
||||
import electrosphere.entity.Entity;
|
||||
import electrosphere.entity.EntityUtils;
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.main.Globals;
|
||||
import electrosphere.main.Main;
|
||||
import electrosphere.net.parser.net.message.EntityMessage;
|
||||
@ -95,7 +96,7 @@ public class ClientNetworking implements Runnable{
|
||||
if(initialized){
|
||||
while(parser.hasIncomingMessaage()){
|
||||
NetworkMessage message = parser.popIncomingMessage();
|
||||
System.out.println("New message " + message.getType());
|
||||
LoggerInterface.loggerNetworking.DEBUG("New message " + message.getType());
|
||||
//do something
|
||||
clientProtocol.handleMessage(message);
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import electrosphere.entity.EntityUtils;
|
||||
import electrosphere.entity.types.creature.CreatureUtils;
|
||||
import electrosphere.game.client.world.ClientWorldData;
|
||||
import electrosphere.game.state.AttachUtils;
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.main.Globals;
|
||||
import electrosphere.main.Main;
|
||||
import electrosphere.net.parser.net.message.EntityMessage;
|
||||
@ -12,6 +13,7 @@ import electrosphere.net.parser.net.message.NetworkMessage;
|
||||
import electrosphere.net.parser.net.message.PlayerMessage;
|
||||
import electrosphere.net.parser.net.message.StatusMessage;
|
||||
import electrosphere.net.parser.net.message.WorldMessage;
|
||||
import org.joml.Vector2f;
|
||||
import org.joml.Vector3f;
|
||||
|
||||
public class ClientProtocol {
|
||||
@ -46,11 +48,11 @@ public class ClientProtocol {
|
||||
}
|
||||
|
||||
void handleEntityMessage(EntityMessage message){
|
||||
System.out.println(message.getMessageSubtype());
|
||||
LoggerInterface.loggerNetworking.DEBUG("Parse entity message of type " + message.getMessageSubtype());
|
||||
switch(message.getMessageSubtype()){
|
||||
case CREATE:
|
||||
System.out.println("Spawn ID " + message.getentityID());
|
||||
Entity newlySpawnedEntity = CreatureUtils.spawnBasicCreature(message.getcreatureType(), 0.005f, 0.025f);
|
||||
LoggerInterface.loggerNetworking.DEBUG("Spawn ID " + message.getentityID() + " of type " + message.getcreatureType());
|
||||
Entity newlySpawnedEntity = EntityUtils.spawnEntityFromEntityMap(message.getcreatureType());;
|
||||
EntityUtils.getEntityScale(newlySpawnedEntity).set(0.005f);
|
||||
EntityUtils.getEntityPosition(newlySpawnedEntity).set(message.getpositionX(),message.getpositionY(),message.getpositionZ());
|
||||
EntityUtils.setEntityID(newlySpawnedEntity, message.getentityID());
|
||||
@ -61,7 +63,7 @@ public class ClientProtocol {
|
||||
//literally just adding this to scope so I can use `` Entity target; `` again
|
||||
if(message.getentityID() != -1){
|
||||
Entity target = Globals.entityManager.getEntityFromId(message.getentityID());
|
||||
System.out.println("ID: " + message.getentityID());
|
||||
LoggerInterface.loggerNetworking.DEBUG("ID: " + message.getentityID());
|
||||
if(target != null){
|
||||
EntityUtils.getEntityPosition(target).set(message.getpositionX(),message.getpositionY(),message.getpositionZ());
|
||||
}
|
||||
@ -84,7 +86,7 @@ public class ClientProtocol {
|
||||
case ATTACHENTITYTOENTITY:
|
||||
Entity child = Globals.entityManager.getEntityFromId(message.getentityID());
|
||||
Entity parent = Globals.entityManager.getEntityFromId(message.gettargetID());
|
||||
System.out.println("Attach " + message.getentityID() + " to " + message.gettargetID() + " on bone " + message.getbone());
|
||||
LoggerInterface.loggerNetworking.DEBUG("Attach " + message.getentityID() + " to " + message.gettargetID() + " on bone " + message.getbone());
|
||||
if(child != null && parent != null){
|
||||
AttachUtils.attachEntityToEntityAtBone(parent, child, message.getbone());
|
||||
}
|
||||
@ -96,7 +98,7 @@ public class ClientProtocol {
|
||||
switch(message.getMessageSubtype()){
|
||||
case SET_ID:
|
||||
Main.playerId = message.getplayerID();
|
||||
System.out.println("Player ID is " + Main.playerId);
|
||||
LoggerInterface.loggerNetworking.DEBUG("Player ID is " + Main.playerId);
|
||||
break;
|
||||
case SETINITIALDISCRETEPOSITION:
|
||||
Globals.clientPlayerData.setInitialDiscretePosition(message.getinitialDiscretePositionX(), message.getinitialDiscretePositionY());
|
||||
@ -121,6 +123,9 @@ public class ClientProtocol {
|
||||
Globals.clientTerrainManager.attachWorldMessage(message);
|
||||
Globals.clientTerrainManager.handleMessages();
|
||||
break;
|
||||
case SPAWNPOSITION:
|
||||
Globals.spawnPoint.set(new Vector3f(message.getrealLocationX(),0,message.getrealLocationY()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -64,6 +64,11 @@ ENTITY_MESSAGE,
|
||||
rVal = WorldMessage.parseMacroValueMessage(byteStream);
|
||||
}
|
||||
break;
|
||||
case TypeBytes.WORLD_MESSAGE_TYPE_SPAWNPOSITION:
|
||||
if(WorldMessage.canParseMessage(byteStream,secondByte)){
|
||||
rVal = WorldMessage.parseSpawnPositionMessage(byteStream);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case TypeBytes.MESSAGE_TYPE_PLAYER:
|
||||
|
||||
@ -24,6 +24,7 @@ Message categories
|
||||
public static final byte WORLD_MESSAGE_TYPE_REQUESTMACROVALUES = 1;
|
||||
public static final byte WORLD_MESSAGE_TYPE_UPDATE = 2;
|
||||
public static final byte WORLD_MESSAGE_TYPE_MACROVALUE = 3;
|
||||
public static final byte WORLD_MESSAGE_TYPE_SPAWNPOSITION = 4;
|
||||
/*
|
||||
World packet sizes
|
||||
*/
|
||||
@ -31,6 +32,7 @@ Message categories
|
||||
public static final byte WORLD_MESSAGE_TYPE_REQUESTMACROVALUES_SIZE = 10;
|
||||
public static final byte WORLD_MESSAGE_TYPE_UPDATE_SIZE = 10;
|
||||
public static final byte WORLD_MESSAGE_TYPE_MACROVALUE_SIZE = 118;
|
||||
public static final byte WORLD_MESSAGE_TYPE_SPAWNPOSITION_SIZE = 10;
|
||||
/*
|
||||
Player subcategories
|
||||
*/
|
||||
|
||||
@ -11,6 +11,7 @@ public class WorldMessage extends NetworkMessage {
|
||||
REQUESTMACROVALUES,
|
||||
UPDATE,
|
||||
MACROVALUE,
|
||||
SPAWNPOSITION,
|
||||
}
|
||||
|
||||
WorldMessageType messageType;
|
||||
@ -23,6 +24,8 @@ public class WorldMessage extends NetworkMessage {
|
||||
int worldMaxY;
|
||||
int locationX;
|
||||
int locationY;
|
||||
float realLocationX;
|
||||
float realLocationY;
|
||||
float macroValue00;
|
||||
float macroValue01;
|
||||
float macroValue02;
|
||||
@ -123,6 +126,22 @@ public class WorldMessage extends NetworkMessage {
|
||||
this.locationY = locationY;
|
||||
}
|
||||
|
||||
public float getrealLocationX() {
|
||||
return realLocationX;
|
||||
}
|
||||
|
||||
public void setrealLocationX(float realLocationX) {
|
||||
this.realLocationX = realLocationX;
|
||||
}
|
||||
|
||||
public float getrealLocationY() {
|
||||
return realLocationY;
|
||||
}
|
||||
|
||||
public void setrealLocationY(float realLocationY) {
|
||||
this.realLocationY = realLocationY;
|
||||
}
|
||||
|
||||
public float getmacroValue00() {
|
||||
return macroValue00;
|
||||
}
|
||||
@ -298,6 +317,12 @@ public class WorldMessage extends NetworkMessage {
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
case TypeBytes.WORLD_MESSAGE_TYPE_SPAWNPOSITION:
|
||||
if(byteStream.size() >= TypeBytes.WORLD_MESSAGE_TYPE_SPAWNPOSITION_SIZE){
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -412,6 +437,22 @@ public class WorldMessage extends NetworkMessage {
|
||||
return rVal;
|
||||
}
|
||||
|
||||
public static WorldMessage parseSpawnPositionMessage(List<Byte> byteStream){
|
||||
WorldMessage rVal = new WorldMessage(WorldMessageType.SPAWNPOSITION);
|
||||
stripPacketHeader(byteStream);
|
||||
rVal.setrealLocationX(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||
rVal.setrealLocationY(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||
return rVal;
|
||||
}
|
||||
|
||||
public static WorldMessage constructSpawnPositionMessage(float realLocationX,float realLocationY){
|
||||
WorldMessage rVal = new WorldMessage(WorldMessageType.SPAWNPOSITION);
|
||||
rVal.setrealLocationX(realLocationX);
|
||||
rVal.setrealLocationY(realLocationY);
|
||||
rVal.serialize();
|
||||
return rVal;
|
||||
}
|
||||
|
||||
@Override
|
||||
void serialize(){
|
||||
byte[] intValues = new byte[8];
|
||||
@ -559,6 +600,19 @@ public class WorldMessage extends NetworkMessage {
|
||||
rawBytes[110+i] = intValues[i];
|
||||
}
|
||||
break;
|
||||
case SPAWNPOSITION:
|
||||
rawBytes = new byte[2+4+4];
|
||||
//message header
|
||||
rawBytes[0] = TypeBytes.MESSAGE_TYPE_WORLD;
|
||||
//entity messaage header
|
||||
rawBytes[1] = TypeBytes.WORLD_MESSAGE_TYPE_SPAWNPOSITION;
|
||||
intValues = ByteStreamUtils.serializeFloatToBytes(realLocationX);
|
||||
for(int i = 0; i < 4; i++){
|
||||
rawBytes[2+i] = intValues[i];
|
||||
} intValues = ByteStreamUtils.serializeFloatToBytes(realLocationY);
|
||||
for(int i = 0; i < 4; i++){
|
||||
rawBytes[6+i] = intValues[i];
|
||||
} break;
|
||||
}
|
||||
serialized = true;
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import electrosphere.entity.Entity;
|
||||
import electrosphere.entity.EntityUtils;
|
||||
import electrosphere.entity.types.item.ItemUtils;
|
||||
import electrosphere.game.state.AttachUtils;
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.main.Globals;
|
||||
import electrosphere.main.Main;
|
||||
import electrosphere.net.NetUtils;
|
||||
@ -54,12 +55,12 @@ public class ServerConnectionHandler implements Runnable {
|
||||
public ServerConnectionHandler(Socket socket) {
|
||||
this.socket = socket;
|
||||
playerID = getPlayerID();
|
||||
System.out.println("Player ID: " + playerID);
|
||||
LoggerInterface.loggerNetworking.INFO("Player ID: " + playerID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
System.out.println("ServerConnectionHandler start");
|
||||
LoggerInterface.loggerNetworking.INFO("ServerConnectionHandler start");
|
||||
initialized = false;
|
||||
try {
|
||||
socket.setSoTimeout(100);
|
||||
@ -121,6 +122,10 @@ public class ServerConnectionHandler implements Runnable {
|
||||
Globals.serverWorldData.convertRealToChunkSpace(Globals.spawnPoint.z)
|
||||
)
|
||||
);
|
||||
//send spawn point
|
||||
networkParser.addOutgoingMessage(
|
||||
WorldMessage.constructSpawnPositionMessage(Globals.spawnPoint.x, Globals.spawnPoint.z)
|
||||
);
|
||||
//tell them what player stats they are
|
||||
networkParser.addOutgoingMessage(PlayerMessage.constructSet_IDMessage(playerID));
|
||||
//figure out what chunk they're in
|
||||
@ -141,22 +146,31 @@ public class ServerConnectionHandler implements Runnable {
|
||||
);
|
||||
if(CreatureUtils.isCreature(currentEntity)){
|
||||
if(CreatureUtils.hasControllerPlayerId(currentEntity)){
|
||||
System.out.println("Sending controller packets");
|
||||
LoggerInterface.loggerNetworking.INFO("Sending controller packets");
|
||||
networkParser.addOutgoingMessage(NetUtils.createSetCreatureControllerIdEntityMessage(currentEntity));
|
||||
}
|
||||
}
|
||||
}
|
||||
// for(Entity currentEntity : Globals.entityManager.getItemEntities()){
|
||||
// if(AttachUtils.isAttached(currentEntity)){
|
||||
// networkParser.addOutgoingMessage(
|
||||
// EntityMessage.constructattachEntityToEntityMessage(
|
||||
// currentEntity.getId(),
|
||||
// AttachUtils.getTargetBone(currentEntity),
|
||||
// AttachUtils.getParent(currentEntity).getId()
|
||||
// )
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
for(Entity currentEntity : Globals.entityManager.getItemEntities()){
|
||||
networkParser.addOutgoingMessage(
|
||||
EntityMessage.constructCreateMessage(
|
||||
currentEntity.getId(),
|
||||
CreatureUtils.getCreatureType(currentEntity),
|
||||
EntityUtils.getEntityPosition(currentEntity).x,
|
||||
EntityUtils.getEntityPosition(currentEntity).y,
|
||||
EntityUtils.getEntityPosition(currentEntity).z
|
||||
)
|
||||
);
|
||||
if(AttachUtils.isAttached(currentEntity)){
|
||||
networkParser.addOutgoingMessage(
|
||||
EntityMessage.constructattachEntityToEntityMessage(
|
||||
currentEntity.getId(),
|
||||
AttachUtils.getTargetBone(currentEntity),
|
||||
AttachUtils.getParent(currentEntity).getId()
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//let client know it's ready
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
|
||||
@ -4,6 +4,7 @@ import electrosphere.entity.CameraEntityUtils;
|
||||
import electrosphere.entity.Entity;
|
||||
import electrosphere.entity.EntityDataStrings;
|
||||
import electrosphere.entity.EntityUtils;
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.main.Globals;
|
||||
import static electrosphere.main.Main.deltaTime;
|
||||
import static electrosphere.main.Main.view_Range;
|
||||
@ -95,7 +96,7 @@ public class RenderingEngine {
|
||||
Globals.window = glfwCreateWindow(screenWidth, screenHeight, "LearnOpenGL", NULL, NULL);
|
||||
//Errors for failure to create window (IE: No GUI mode on linux ?)
|
||||
if (Globals.window == NULL) {
|
||||
System.out.println("Failed to make window.");
|
||||
LoggerInterface.loggerEngine.ERROR("Failed to make window.", new Exception("Renderer Creation Failure"));
|
||||
glfwTerminate();
|
||||
}
|
||||
//Makes the window that was just created the current OS-level window context
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package electrosphere.renderer;
|
||||
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.main.Main;
|
||||
import electrosphere.util.FileLoadingUtils;
|
||||
import java.io.BufferedReader;
|
||||
@ -110,10 +111,10 @@ public class ShaderProgram {
|
||||
int success;
|
||||
success = glGetShaderi(rVal.vertexShader, GL_COMPILE_STATUS);
|
||||
if (success != GL_TRUE) {
|
||||
System.out.println("Vertex Shader failed to compile!");
|
||||
System.out.println("Source is: ");
|
||||
System.out.println(GL20.glGetShaderSource(rVal.vertexShader));
|
||||
throw new RuntimeException(GL20.glGetShaderInfoLog(rVal.vertexShader));
|
||||
LoggerInterface.loggerRenderer.WARNING("Vertex Shader failed to compile!");
|
||||
LoggerInterface.loggerRenderer.WARNING("Source is: ");
|
||||
LoggerInterface.loggerRenderer.WARNING(GL20.glGetShaderSource(rVal.vertexShader));
|
||||
LoggerInterface.loggerRenderer.ERROR("Runtime Exception", new RuntimeException(GL20.glGetShaderInfoLog(rVal.vertexShader)));
|
||||
}
|
||||
//Creates and opengl object for a fragment shader and assigns its 'pointer' to the integer fragmentShader
|
||||
rVal.fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
@ -124,10 +125,10 @@ public class ShaderProgram {
|
||||
//This tests for the success of the compile attempt
|
||||
success = glGetShaderi(rVal.fragmentShader, GL_COMPILE_STATUS);
|
||||
if (success != GL_TRUE) {
|
||||
System.out.println("Fragment Shader failed to compile!");
|
||||
System.out.println("Source is: ");
|
||||
System.out.println(GL20.glGetShaderSource(rVal.fragmentShader));
|
||||
throw new RuntimeException(GL20.glGetShaderInfoLog(rVal.fragmentShader));
|
||||
LoggerInterface.loggerRenderer.WARNING("Fragment Shader failed to compile!");
|
||||
LoggerInterface.loggerRenderer.WARNING("Source is: ");
|
||||
LoggerInterface.loggerRenderer.WARNING(GL20.glGetShaderSource(rVal.fragmentShader));
|
||||
LoggerInterface.loggerRenderer.ERROR("Runtime Exception", new RuntimeException(GL20.glGetShaderInfoLog(rVal.fragmentShader)));
|
||||
}
|
||||
//This creates a shader program opengl object and assigns its 'pointer' to the integer shaderProgram
|
||||
rVal.shaderProgram = glCreateProgram();
|
||||
@ -223,8 +224,10 @@ public class ShaderProgram {
|
||||
int success;
|
||||
success = glGetShaderi(rVal.vertexShader, GL_COMPILE_STATUS);
|
||||
if (success != GL_TRUE) {
|
||||
System.out.println("Vertex Shader failed to compile!");
|
||||
throw new RuntimeException(GL20.glGetShaderInfoLog(rVal.vertexShader));
|
||||
LoggerInterface.loggerRenderer.WARNING("Vertex Shader failed to compile!");
|
||||
LoggerInterface.loggerRenderer.WARNING("Source is: ");
|
||||
LoggerInterface.loggerRenderer.WARNING(GL20.glGetShaderSource(rVal.vertexShader));
|
||||
LoggerInterface.loggerRenderer.ERROR("Runtime Exception", new RuntimeException(GL20.glGetShaderInfoLog(rVal.vertexShader)));
|
||||
}
|
||||
//Creates and opengl object for a fragment shader and assigns its 'pointer' to the integer fragmentShader
|
||||
rVal.fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
@ -235,8 +238,10 @@ public class ShaderProgram {
|
||||
//This tests for the success of the compile attempt
|
||||
success = glGetShaderi(rVal.fragmentShader, GL_COMPILE_STATUS);
|
||||
if (success != GL_TRUE) {
|
||||
System.out.println("Fragment Shader failed to compile!");
|
||||
throw new RuntimeException(GL20.glGetShaderInfoLog(rVal.fragmentShader));
|
||||
LoggerInterface.loggerRenderer.WARNING("Fragment Shader failed to compile!");
|
||||
LoggerInterface.loggerRenderer.WARNING("Source is: ");
|
||||
LoggerInterface.loggerRenderer.WARNING(GL20.glGetShaderSource(rVal.fragmentShader));
|
||||
LoggerInterface.loggerRenderer.ERROR("Runtime Exception", new RuntimeException(GL20.glGetShaderInfoLog(rVal.fragmentShader)));
|
||||
}
|
||||
//This creates a shader program opengl object and assigns its 'pointer' to the integer shaderProgram
|
||||
rVal.shaderProgram = glCreateProgram();
|
||||
@ -300,8 +305,10 @@ public class ShaderProgram {
|
||||
int success;
|
||||
success = glGetShaderi(rVal.vertexShader, GL_COMPILE_STATUS);
|
||||
if (success != GL_TRUE) {
|
||||
System.out.println("Vertex Shader failed to compile!");
|
||||
throw new RuntimeException(GL20.glGetShaderInfoLog(rVal.vertexShader));
|
||||
LoggerInterface.loggerRenderer.WARNING("Vertex Shader failed to compile!");
|
||||
LoggerInterface.loggerRenderer.WARNING("Source is: ");
|
||||
LoggerInterface.loggerRenderer.WARNING(GL20.glGetShaderSource(rVal.vertexShader));
|
||||
LoggerInterface.loggerRenderer.ERROR("Runtime Exception", new RuntimeException(GL20.glGetShaderInfoLog(rVal.vertexShader)));
|
||||
}
|
||||
//Creates and opengl object for a fragment shader and assigns its 'pointer' to the integer fragmentShader
|
||||
rVal.fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
@ -312,8 +319,10 @@ public class ShaderProgram {
|
||||
//This tests for the success of the compile attempt
|
||||
success = glGetShaderi(rVal.fragmentShader, GL_COMPILE_STATUS);
|
||||
if (success != GL_TRUE) {
|
||||
System.out.println("Fragment Shader failed to compile!");
|
||||
throw new RuntimeException(GL20.glGetShaderInfoLog(rVal.fragmentShader));
|
||||
LoggerInterface.loggerRenderer.WARNING("Fragment Shader failed to compile!");
|
||||
LoggerInterface.loggerRenderer.WARNING("Source is: ");
|
||||
LoggerInterface.loggerRenderer.WARNING(GL20.glGetShaderSource(rVal.fragmentShader));
|
||||
LoggerInterface.loggerRenderer.ERROR("Runtime Exception", new RuntimeException(GL20.glGetShaderInfoLog(rVal.fragmentShader)));
|
||||
}
|
||||
//This creates a shader program opengl object and assigns its 'pointer' to the integer shaderProgram
|
||||
rVal.shaderProgram = glCreateProgram();
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package electrosphere.util;
|
||||
|
||||
import electrosphere.logger.LoggerInterface;
|
||||
import electrosphere.main.Globals;
|
||||
import electrosphere.main.Main;
|
||||
import electrosphere.renderer.Material;
|
||||
@ -65,10 +66,10 @@ public class ModelLoader {
|
||||
ArrayList<String> texture_path_list = mesh_map.get(current_mesh.nodeID);
|
||||
String diffuse_path = TextureMap.get_diffuse_path(texture_path_list);
|
||||
if(diffuse_path != null){
|
||||
System.out.println(diffuse_path);
|
||||
LoggerInterface.loggerRenderer.DEBUG(diffuse_path);
|
||||
Texture diffuse = new Texture(diffuse_path);
|
||||
final_material.set_diffuse(diffuse);
|
||||
System.out.println(diffuse);
|
||||
LoggerInterface.loggerRenderer.DEBUG(diffuse.toString());
|
||||
} else {
|
||||
final_material.set_diffuse(Globals.textureDiffuseDefault);
|
||||
}
|
||||
@ -76,7 +77,7 @@ public class ModelLoader {
|
||||
if(specular_path != null){
|
||||
Texture specular = new Texture(specular_path);
|
||||
final_material.set_specular(specular);
|
||||
System.out.println(specular);
|
||||
LoggerInterface.loggerRenderer.DEBUG(specular.toString());
|
||||
} else {
|
||||
final_material.set_specular(Globals.textureSpecularDefault);
|
||||
}
|
||||
|
||||
@ -70,6 +70,16 @@
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
"name" : "realLocationX",
|
||||
"type" : "FIXED_FLOAT"
|
||||
},
|
||||
{
|
||||
"name" : "realLocationY",
|
||||
"type" : "FIXED_FLOAT"
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -201,6 +211,13 @@
|
||||
"randomizerValue21",
|
||||
"randomizerValue22"
|
||||
]
|
||||
},
|
||||
{
|
||||
"messageName" : "SpawnPosition",
|
||||
"data" : [
|
||||
"realLocationX",
|
||||
"realLocationY"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
Loading…
Reference in New Issue
Block a user