Mid terrain net stream / starting worldgen
This commit is contained in:
parent
444bda5394
commit
c13f137f68
@ -217,8 +217,8 @@ public class ControlHandler {
|
|||||||
controlsState.put(DATA_STRING_INPUT_CODE_MOVEMENT_FORWARD, true);
|
controlsState.put(DATA_STRING_INPUT_CODE_MOVEMENT_FORWARD, true);
|
||||||
Vector3f position = EntityUtils.getEntityPosition(Globals.playerCharacter);
|
Vector3f position = EntityUtils.getEntityPosition(Globals.playerCharacter);
|
||||||
EntityMessage outgoingMessage = EntityMessage.constructMoveMessage(
|
EntityMessage outgoingMessage = EntityMessage.constructMoveMessage(
|
||||||
System.currentTimeMillis(),
|
|
||||||
Globals.playerCharacter.getId(),
|
Globals.playerCharacter.getId(),
|
||||||
|
System.currentTimeMillis(),
|
||||||
position.x,
|
position.x,
|
||||||
position.y,
|
position.y,
|
||||||
position.z
|
position.z
|
||||||
|
|||||||
@ -81,8 +81,8 @@ public class MovementTree {
|
|||||||
if(Globals.mainConfig.runServer){
|
if(Globals.mainConfig.runServer){
|
||||||
Globals.server.broadcastMessage(
|
Globals.server.broadcastMessage(
|
||||||
EntityMessage.constructMoveMessage(
|
EntityMessage.constructMoveMessage(
|
||||||
System.currentTimeMillis(),
|
|
||||||
parent.getId(),
|
parent.getId(),
|
||||||
|
System.currentTimeMillis(),
|
||||||
message.getpositionX(),
|
message.getpositionX(),
|
||||||
message.getpositionY(),
|
message.getpositionY(),
|
||||||
message.getpositionZ()
|
message.getpositionZ()
|
||||||
|
|||||||
@ -0,0 +1,9 @@
|
|||||||
|
package electrosphere.game.server.character;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author amaterasu
|
||||||
|
*/
|
||||||
|
public class Character {
|
||||||
|
|
||||||
|
}
|
||||||
@ -88,11 +88,15 @@ public class LoadingThread extends Thread {
|
|||||||
loadingBox.setDraw(true);
|
loadingBox.setDraw(true);
|
||||||
|
|
||||||
//initialize the terrain manager (server only)
|
//initialize the terrain manager (server only)
|
||||||
|
if(FLAG_INIT_SERVER){
|
||||||
initServerGameTerrainManager();
|
initServerGameTerrainManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//init the data of the world
|
//init the data of the world
|
||||||
|
if(FLAG_INIT_SERVER){
|
||||||
initServerGameWorldData();
|
initServerGameWorldData();
|
||||||
|
}
|
||||||
|
|
||||||
//initialize the server thread (server only)
|
//initialize the server thread (server only)
|
||||||
if(FLAG_INIT_SERVER){
|
if(FLAG_INIT_SERVER){
|
||||||
@ -111,7 +115,7 @@ public class LoadingThread extends Thread {
|
|||||||
initDynamicCellManager();
|
initDynamicCellManager();
|
||||||
|
|
||||||
//collision engine
|
//collision engine
|
||||||
initCollisionEngine();
|
initCollisionEngine(FLAG_INIT_SERVER);
|
||||||
|
|
||||||
//initialize the basic graphical entities of the world (skybox, camera)
|
//initialize the basic graphical entities of the world (skybox, camera)
|
||||||
initWorldBaseGraphicalEntities();
|
initWorldBaseGraphicalEntities();
|
||||||
@ -173,7 +177,7 @@ public class LoadingThread extends Thread {
|
|||||||
initDynamicCellManager();
|
initDynamicCellManager();
|
||||||
|
|
||||||
//collision engine
|
//collision engine
|
||||||
initCollisionEngine();
|
initCollisionEngine(FLAG_INIT_SERVER);
|
||||||
|
|
||||||
//initialize the basic graphical entities of the world (skybox, camera)
|
//initialize the basic graphical entities of the world (skybox, camera)
|
||||||
initWorldBaseGraphicalEntities();
|
initWorldBaseGraphicalEntities();
|
||||||
@ -293,8 +297,8 @@ public class LoadingThread extends Thread {
|
|||||||
Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager);
|
Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void initCollisionEngine(){
|
static void initCollisionEngine(boolean FLAG_INIT_SERVER){
|
||||||
if(Globals.mainConfig.runServer){
|
if(FLAG_INIT_SERVER){
|
||||||
Globals.commonWorldData = new CommonWorldData(Globals.serverWorldData, Globals.serverTerrainManager);
|
Globals.commonWorldData = new CommonWorldData(Globals.serverWorldData, Globals.serverTerrainManager);
|
||||||
} else {
|
} else {
|
||||||
Globals.commonWorldData = new CommonWorldData(Globals.clientWorldData, Globals.clientTerrainManager);
|
Globals.commonWorldData = new CommonWorldData(Globals.clientWorldData, Globals.clientTerrainManager);
|
||||||
@ -429,13 +433,13 @@ public class LoadingThread extends Thread {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
// for(int i = 0; i < 10; i++){
|
for(int i = 0; i < 10; i++){
|
||||||
// Random rand = new Random();
|
Random rand = new Random();
|
||||||
// String treePath = "Models/tree1.fbx";
|
String treePath = "Models/tree1.fbx";
|
||||||
// Entity tree = EntityUtils.spawnDrawableEntity(treePath);
|
Entity tree = EntityUtils.spawnDrawableEntity(treePath);
|
||||||
// EntityUtils.getEntityPosition(tree).set(rand.nextFloat() * 150 + 10, 0, rand.nextFloat() * 150 + 10);
|
EntityUtils.getEntityPosition(tree).set(rand.nextFloat() * 150 + 10, 0, rand.nextFloat() * 150 + 10);
|
||||||
//// EntityUtils.getEntityRotation(tree).rotateAxis((float)-Math.PI/2.0f, new Vector3f(1,0,0));
|
// EntityUtils.getEntityRotation(tree).rotateAxis((float)-Math.PI/2.0f, new Vector3f(1,0,0));
|
||||||
// }
|
}
|
||||||
|
|
||||||
Entity sword = ItemUtils.spawnBasicItem(2);
|
Entity sword = ItemUtils.spawnBasicItem(2);
|
||||||
Entity testHomie = CreatureUtils.spawnBasicCreature(0, 0.1f, 0.5f);
|
Entity testHomie = CreatureUtils.spawnBasicCreature(0, 0.1f, 0.5f);
|
||||||
|
|||||||
@ -28,6 +28,7 @@ import org.joml.Vector3f;
|
|||||||
import org.lwjgl.glfw.*;
|
import org.lwjgl.glfw.*;
|
||||||
import static org.lwjgl.glfw.GLFW.*;
|
import static org.lwjgl.glfw.GLFW.*;
|
||||||
import electrosphere.util.ModelLoader;
|
import electrosphere.util.ModelLoader;
|
||||||
|
import electrosphere.util.worldviewer.TerrainViewer;
|
||||||
import electrosphere.util.Utilities;
|
import electrosphere.util.Utilities;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -111,6 +112,9 @@ public class Main {
|
|||||||
//init global variables
|
//init global variables
|
||||||
Globals.initGlobals();
|
Globals.initGlobals();
|
||||||
|
|
||||||
|
//debug: create terrain/world viewer
|
||||||
|
TerrainViewer.runViewer();
|
||||||
|
|
||||||
//create the drawing context
|
//create the drawing context
|
||||||
Globals.renderingEngine = new RenderingEngine();
|
Globals.renderingEngine = new RenderingEngine();
|
||||||
Globals.renderingEngine.createOpenglContext();
|
Globals.renderingEngine.createOpenglContext();
|
||||||
|
|||||||
@ -15,14 +15,14 @@ public class NetUtils {
|
|||||||
static int port = DEFAULT_PORT;
|
static int port = DEFAULT_PORT;
|
||||||
static String address = "127.0.0.1";
|
static String address = "127.0.0.1";
|
||||||
|
|
||||||
public static EntityMessage createSpawnEntityMessage(Entity e){
|
// public static EntityMessage createSpawnEntityMessage(Entity e){
|
||||||
EntityMessage rVal = EntityMessage.constructCreateMessage(e.getId(), CreatureUtils.getCreatureType(e), 0.0f, 0.0f, 0.0f);
|
// EntityMessage rVal = EntityMessage.constructCreateMessage(e.getId(), CreatureUtils.getCreatureType(e), 0.0f, 0.0f, 0.0f);
|
||||||
return rVal;
|
// return rVal;
|
||||||
}
|
// }
|
||||||
|
|
||||||
public static EntityMessage createSetCreatureControllerIdEntityMessage(Entity e){
|
public static EntityMessage createSetCreatureControllerIdEntityMessage(Entity e){
|
||||||
System.out.println("Controller id: " + CreatureUtils.getControllerPlayerId(e));
|
System.out.println("Controller id: " + CreatureUtils.getControllerPlayerId(e));
|
||||||
EntityMessage rVal = EntityMessage.constructsetPropertyMessage(System.currentTimeMillis(), e.getId(), 0, CreatureUtils.getControllerPlayerId(e));
|
EntityMessage rVal = EntityMessage.constructsetPropertyMessage(e.getId(), System.currentTimeMillis(), 0, CreatureUtils.getControllerPlayerId(e));
|
||||||
return rVal;
|
return rVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -51,7 +51,7 @@ public class ClientProtocol {
|
|||||||
System.out.println("Spawn ID " + message.getentityID());
|
System.out.println("Spawn ID " + message.getentityID());
|
||||||
Entity newlySpawnedEntity = CreatureUtils.spawnBasicCreature(message.getcreatureType(), 0.005f, 0.025f);
|
Entity newlySpawnedEntity = CreatureUtils.spawnBasicCreature(message.getcreatureType(), 0.005f, 0.025f);
|
||||||
EntityUtils.getEntityScale(newlySpawnedEntity).set(0.005f);
|
EntityUtils.getEntityScale(newlySpawnedEntity).set(0.005f);
|
||||||
EntityUtils.getEntityPosition(newlySpawnedEntity).set(10 - 0.5f,Globals.serverTerrainManager.getHeightAtPosition(10, 10),10 - 0.5f);
|
EntityUtils.getEntityPosition(newlySpawnedEntity).set(message.getpositionX(),message.getpositionY(),message.getpositionZ());
|
||||||
EntityUtils.setEntityID(newlySpawnedEntity, message.getentityID());
|
EntityUtils.setEntityID(newlySpawnedEntity, message.getentityID());
|
||||||
break;
|
break;
|
||||||
case DESTROY:
|
case DESTROY:
|
||||||
|
|||||||
@ -165,18 +165,18 @@ public class EntityMessage extends NetworkMessage {
|
|||||||
public static EntityMessage parseCreateMessage(List<Byte> byteStream){
|
public static EntityMessage parseCreateMessage(List<Byte> byteStream){
|
||||||
EntityMessage rVal = new EntityMessage(EntityMessageType.CREATE);
|
EntityMessage rVal = new EntityMessage(EntityMessageType.CREATE);
|
||||||
stripPacketHeader(byteStream);
|
stripPacketHeader(byteStream);
|
||||||
rVal.setcreatureType(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
|
||||||
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||||
|
rVal.setcreatureType(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||||
rVal.setpositionX(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
rVal.setpositionX(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||||
rVal.setpositionY(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
rVal.setpositionY(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||||
rVal.setpositionZ(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
rVal.setpositionZ(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||||
return rVal;
|
return rVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EntityMessage constructCreateMessage(int creatureType,int entityID,float positionX,float positionY,float positionZ){
|
public static EntityMessage constructCreateMessage(int entityID,int creatureType,float positionX,float positionY,float positionZ){
|
||||||
EntityMessage rVal = new EntityMessage(EntityMessageType.CREATE);
|
EntityMessage rVal = new EntityMessage(EntityMessageType.CREATE);
|
||||||
rVal.setcreatureType(creatureType);
|
|
||||||
rVal.setentityID(entityID);
|
rVal.setentityID(entityID);
|
||||||
|
rVal.setcreatureType(creatureType);
|
||||||
rVal.setpositionX(positionX);
|
rVal.setpositionX(positionX);
|
||||||
rVal.setpositionY(positionY);
|
rVal.setpositionY(positionY);
|
||||||
rVal.setpositionZ(positionZ);
|
rVal.setpositionZ(positionZ);
|
||||||
@ -187,18 +187,18 @@ public class EntityMessage extends NetworkMessage {
|
|||||||
public static EntityMessage parseSetPositionMessage(List<Byte> byteStream){
|
public static EntityMessage parseSetPositionMessage(List<Byte> byteStream){
|
||||||
EntityMessage rVal = new EntityMessage(EntityMessageType.SETPOSITION);
|
EntityMessage rVal = new EntityMessage(EntityMessageType.SETPOSITION);
|
||||||
stripPacketHeader(byteStream);
|
stripPacketHeader(byteStream);
|
||||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
|
||||||
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||||
|
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||||
rVal.setpositionX(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
rVal.setpositionX(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||||
rVal.setpositionY(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
rVal.setpositionY(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||||
rVal.setpositionZ(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
rVal.setpositionZ(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||||
return rVal;
|
return rVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EntityMessage constructSetPositionMessage(long time,int entityID,float positionX,float positionY,float positionZ){
|
public static EntityMessage constructSetPositionMessage(int entityID,long time,float positionX,float positionY,float positionZ){
|
||||||
EntityMessage rVal = new EntityMessage(EntityMessageType.SETPOSITION);
|
EntityMessage rVal = new EntityMessage(EntityMessageType.SETPOSITION);
|
||||||
rVal.settime(time);
|
|
||||||
rVal.setentityID(entityID);
|
rVal.setentityID(entityID);
|
||||||
|
rVal.settime(time);
|
||||||
rVal.setpositionX(positionX);
|
rVal.setpositionX(positionX);
|
||||||
rVal.setpositionY(positionY);
|
rVal.setpositionY(positionY);
|
||||||
rVal.setpositionZ(positionZ);
|
rVal.setpositionZ(positionZ);
|
||||||
@ -209,18 +209,18 @@ public class EntityMessage extends NetworkMessage {
|
|||||||
public static EntityMessage parseMoveMessage(List<Byte> byteStream){
|
public static EntityMessage parseMoveMessage(List<Byte> byteStream){
|
||||||
EntityMessage rVal = new EntityMessage(EntityMessageType.MOVE);
|
EntityMessage rVal = new EntityMessage(EntityMessageType.MOVE);
|
||||||
stripPacketHeader(byteStream);
|
stripPacketHeader(byteStream);
|
||||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
|
||||||
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||||
|
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||||
rVal.setpositionX(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
rVal.setpositionX(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||||
rVal.setpositionY(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
rVal.setpositionY(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||||
rVal.setpositionZ(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
rVal.setpositionZ(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||||
return rVal;
|
return rVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EntityMessage constructMoveMessage(long time,int entityID,float positionX,float positionY,float positionZ){
|
public static EntityMessage constructMoveMessage(int entityID,long time,float positionX,float positionY,float positionZ){
|
||||||
EntityMessage rVal = new EntityMessage(EntityMessageType.MOVE);
|
EntityMessage rVal = new EntityMessage(EntityMessageType.MOVE);
|
||||||
rVal.settime(time);
|
|
||||||
rVal.setentityID(entityID);
|
rVal.setentityID(entityID);
|
||||||
|
rVal.settime(time);
|
||||||
rVal.setpositionX(positionX);
|
rVal.setpositionX(positionX);
|
||||||
rVal.setpositionY(positionY);
|
rVal.setpositionY(positionY);
|
||||||
rVal.setpositionZ(positionZ);
|
rVal.setpositionZ(positionZ);
|
||||||
@ -245,17 +245,17 @@ public class EntityMessage extends NetworkMessage {
|
|||||||
public static EntityMessage parseSetBehaviorTreeMessage(List<Byte> byteStream){
|
public static EntityMessage parseSetBehaviorTreeMessage(List<Byte> byteStream){
|
||||||
EntityMessage rVal = new EntityMessage(EntityMessageType.SETBEHAVIORTREE);
|
EntityMessage rVal = new EntityMessage(EntityMessageType.SETBEHAVIORTREE);
|
||||||
stripPacketHeader(byteStream);
|
stripPacketHeader(byteStream);
|
||||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
|
||||||
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||||
|
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||||
rVal.settreeType(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
rVal.settreeType(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||||
rVal.settreeStatus(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
rVal.settreeStatus(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||||
return rVal;
|
return rVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EntityMessage constructSetBehaviorTreeMessage(long time,int entityID,int treeType,int treeStatus){
|
public static EntityMessage constructSetBehaviorTreeMessage(int entityID,long time,int treeType,int treeStatus){
|
||||||
EntityMessage rVal = new EntityMessage(EntityMessageType.SETBEHAVIORTREE);
|
EntityMessage rVal = new EntityMessage(EntityMessageType.SETBEHAVIORTREE);
|
||||||
rVal.settime(time);
|
|
||||||
rVal.setentityID(entityID);
|
rVal.setentityID(entityID);
|
||||||
|
rVal.settime(time);
|
||||||
rVal.settreeType(treeType);
|
rVal.settreeType(treeType);
|
||||||
rVal.settreeStatus(treeStatus);
|
rVal.settreeStatus(treeStatus);
|
||||||
rVal.serialize();
|
rVal.serialize();
|
||||||
@ -265,17 +265,17 @@ public class EntityMessage extends NetworkMessage {
|
|||||||
public static EntityMessage parsesetPropertyMessage(List<Byte> byteStream){
|
public static EntityMessage parsesetPropertyMessage(List<Byte> byteStream){
|
||||||
EntityMessage rVal = new EntityMessage(EntityMessageType.SETPROPERTY);
|
EntityMessage rVal = new EntityMessage(EntityMessageType.SETPROPERTY);
|
||||||
stripPacketHeader(byteStream);
|
stripPacketHeader(byteStream);
|
||||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
|
||||||
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||||
|
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||||
rVal.setpropertyType(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
rVal.setpropertyType(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||||
rVal.setpropertyValue(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
rVal.setpropertyValue(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||||
return rVal;
|
return rVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EntityMessage constructsetPropertyMessage(long time,int entityID,int propertyType,int propertyValue){
|
public static EntityMessage constructsetPropertyMessage(int entityID,long time,int propertyType,int propertyValue){
|
||||||
EntityMessage rVal = new EntityMessage(EntityMessageType.SETPROPERTY);
|
EntityMessage rVal = new EntityMessage(EntityMessageType.SETPROPERTY);
|
||||||
rVal.settime(time);
|
|
||||||
rVal.setentityID(entityID);
|
rVal.setentityID(entityID);
|
||||||
|
rVal.settime(time);
|
||||||
rVal.setpropertyType(propertyType);
|
rVal.setpropertyType(propertyType);
|
||||||
rVal.setpropertyValue(propertyValue);
|
rVal.setpropertyValue(propertyValue);
|
||||||
rVal.serialize();
|
rVal.serialize();
|
||||||
@ -292,11 +292,11 @@ public class EntityMessage extends NetworkMessage {
|
|||||||
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
||||||
//entity messaage header
|
//entity messaage header
|
||||||
rawBytes[1] = TypeBytes.ENTITY_MESSAGE_TYPE_CREATE;
|
rawBytes[1] = TypeBytes.ENTITY_MESSAGE_TYPE_CREATE;
|
||||||
intValues = ByteStreamUtils.serializeIntToBytes(creatureType);
|
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
rawBytes[2+i] = intValues[i];
|
rawBytes[2+i] = intValues[i];
|
||||||
}
|
}
|
||||||
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
intValues = ByteStreamUtils.serializeIntToBytes(creatureType);
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
rawBytes[6+i] = intValues[i];
|
rawBytes[6+i] = intValues[i];
|
||||||
}
|
}
|
||||||
@ -316,13 +316,13 @@ public class EntityMessage extends NetworkMessage {
|
|||||||
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
||||||
//entity messaage header
|
//entity messaage header
|
||||||
rawBytes[1] = TypeBytes.ENTITY_MESSAGE_TYPE_SETPOSITION;
|
rawBytes[1] = TypeBytes.ENTITY_MESSAGE_TYPE_SETPOSITION;
|
||||||
intValues = ByteStreamUtils.serializeLongToBytes(time);
|
|
||||||
for(int i = 0; i < 8; i++){
|
|
||||||
rawBytes[2+i] = intValues[i];
|
|
||||||
}
|
|
||||||
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
rawBytes[10+i] = intValues[i];
|
rawBytes[2+i] = intValues[i];
|
||||||
|
}
|
||||||
|
intValues = ByteStreamUtils.serializeLongToBytes(time);
|
||||||
|
for(int i = 0; i < 8; i++){
|
||||||
|
rawBytes[6+i] = intValues[i];
|
||||||
}
|
}
|
||||||
intValues = ByteStreamUtils.serializeFloatToBytes(positionX);
|
intValues = ByteStreamUtils.serializeFloatToBytes(positionX);
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
@ -340,13 +340,13 @@ public class EntityMessage extends NetworkMessage {
|
|||||||
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
||||||
//entity messaage header
|
//entity messaage header
|
||||||
rawBytes[1] = TypeBytes.ENTITY_MESSAGE_TYPE_MOVE;
|
rawBytes[1] = TypeBytes.ENTITY_MESSAGE_TYPE_MOVE;
|
||||||
intValues = ByteStreamUtils.serializeLongToBytes(time);
|
|
||||||
for(int i = 0; i < 8; i++){
|
|
||||||
rawBytes[2+i] = intValues[i];
|
|
||||||
}
|
|
||||||
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
rawBytes[10+i] = intValues[i];
|
rawBytes[2+i] = intValues[i];
|
||||||
|
}
|
||||||
|
intValues = ByteStreamUtils.serializeLongToBytes(time);
|
||||||
|
for(int i = 0; i < 8; i++){
|
||||||
|
rawBytes[6+i] = intValues[i];
|
||||||
}
|
}
|
||||||
intValues = ByteStreamUtils.serializeFloatToBytes(positionX);
|
intValues = ByteStreamUtils.serializeFloatToBytes(positionX);
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
@ -375,13 +375,13 @@ public class EntityMessage extends NetworkMessage {
|
|||||||
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
||||||
//entity messaage header
|
//entity messaage header
|
||||||
rawBytes[1] = TypeBytes.ENTITY_MESSAGE_TYPE_SETBEHAVIORTREE;
|
rawBytes[1] = TypeBytes.ENTITY_MESSAGE_TYPE_SETBEHAVIORTREE;
|
||||||
intValues = ByteStreamUtils.serializeLongToBytes(time);
|
|
||||||
for(int i = 0; i < 8; i++){
|
|
||||||
rawBytes[2+i] = intValues[i];
|
|
||||||
}
|
|
||||||
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
rawBytes[10+i] = intValues[i];
|
rawBytes[2+i] = intValues[i];
|
||||||
|
}
|
||||||
|
intValues = ByteStreamUtils.serializeLongToBytes(time);
|
||||||
|
for(int i = 0; i < 8; i++){
|
||||||
|
rawBytes[6+i] = intValues[i];
|
||||||
}
|
}
|
||||||
intValues = ByteStreamUtils.serializeIntToBytes(treeType);
|
intValues = ByteStreamUtils.serializeIntToBytes(treeType);
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
@ -398,13 +398,13 @@ public class EntityMessage extends NetworkMessage {
|
|||||||
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
||||||
//entity messaage header
|
//entity messaage header
|
||||||
rawBytes[1] = TypeBytes.ENTITY_MESSAGE_TYPE_SETPROPERTY;
|
rawBytes[1] = TypeBytes.ENTITY_MESSAGE_TYPE_SETPROPERTY;
|
||||||
intValues = ByteStreamUtils.serializeLongToBytes(time);
|
|
||||||
for(int i = 0; i < 8; i++){
|
|
||||||
rawBytes[2+i] = intValues[i];
|
|
||||||
}
|
|
||||||
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
rawBytes[10+i] = intValues[i];
|
rawBytes[2+i] = intValues[i];
|
||||||
|
}
|
||||||
|
intValues = ByteStreamUtils.serializeLongToBytes(time);
|
||||||
|
for(int i = 0; i < 8; i++){
|
||||||
|
rawBytes[6+i] = intValues[i];
|
||||||
}
|
}
|
||||||
intValues = ByteStreamUtils.serializeIntToBytes(propertyType);
|
intValues = ByteStreamUtils.serializeIntToBytes(propertyType);
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
|
|||||||
@ -123,7 +123,15 @@ public class ServerConnectionHandler implements Runnable {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
for(Entity currentEntity : Globals.entityManager.getMoveable()){
|
for(Entity currentEntity : Globals.entityManager.getMoveable()){
|
||||||
networkParser.addOutgoingMessage(NetUtils.createSpawnEntityMessage(currentEntity));
|
networkParser.addOutgoingMessage(
|
||||||
|
EntityMessage.constructCreateMessage(
|
||||||
|
currentEntity.getId(),
|
||||||
|
CreatureUtils.getCreatureType(currentEntity),
|
||||||
|
EntityUtils.getEntityPosition(currentEntity).x,
|
||||||
|
EntityUtils.getEntityPosition(currentEntity).y,
|
||||||
|
EntityUtils.getEntityPosition(currentEntity).z
|
||||||
|
)
|
||||||
|
);
|
||||||
if(CreatureUtils.isCreature(currentEntity)){
|
if(CreatureUtils.isCreature(currentEntity)){
|
||||||
if(CreatureUtils.hasControllerPlayerId(currentEntity)){
|
if(CreatureUtils.hasControllerPlayerId(currentEntity)){
|
||||||
System.out.println("Sending controller packets");
|
System.out.println("Sending controller packets");
|
||||||
|
|||||||
@ -0,0 +1,45 @@
|
|||||||
|
package electrosphere.util.worldviewer;
|
||||||
|
|
||||||
|
import electrosphere.game.server.terrain.models.TerrainModel;
|
||||||
|
import electrosphere.main.Globals;
|
||||||
|
import electrosphere.util.Utilities;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Graphics;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.awt.event.KeyListener;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author amaterasu
|
||||||
|
*/
|
||||||
|
public class TerrainViewer {
|
||||||
|
|
||||||
|
|
||||||
|
public static void runViewer(){
|
||||||
|
TerrainModel terrainModel = Utilities.loadObjectFromBakedJsonFile("/Config/terrain.json", TerrainModel.class);
|
||||||
|
float[][] elevationMacro = terrainModel.getElevation();
|
||||||
|
|
||||||
|
JFrame frame = new JFrame();
|
||||||
|
TerrainViewerJComponent jComponent = new TerrainViewerJComponent(elevationMacro);
|
||||||
|
frame.add(jComponent);
|
||||||
|
frame.addKeyListener(new TerrainViewerKeyListener(jComponent));
|
||||||
|
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
frame.setBounds(0, 0, 600, 600);
|
||||||
|
frame.setVisible(true);
|
||||||
|
|
||||||
|
while(true){
|
||||||
|
frame.repaint();
|
||||||
|
try {
|
||||||
|
TimeUnit.MILLISECONDS.sleep(10);
|
||||||
|
} catch (InterruptedException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,67 @@
|
|||||||
|
package electrosphere.util.worldviewer;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Graphics;
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author amaterasu
|
||||||
|
*/
|
||||||
|
public class TerrainViewerJComponent extends JComponent {
|
||||||
|
|
||||||
|
float elevationMap[][];
|
||||||
|
float maxHeight = 0;
|
||||||
|
int dimX;
|
||||||
|
int dimY;
|
||||||
|
|
||||||
|
int viewerOffsetX = 0;
|
||||||
|
int viewerOffsetY = 0;
|
||||||
|
|
||||||
|
public TerrainViewerJComponent(float[][] elevationMap){
|
||||||
|
this.elevationMap = elevationMap;
|
||||||
|
dimX = elevationMap.length;
|
||||||
|
dimY = elevationMap[0].length;
|
||||||
|
|
||||||
|
for(int x = 0; x < dimX; x++){
|
||||||
|
for(int y = 0; y < dimY; y++){
|
||||||
|
if(elevationMap[x][y] > maxHeight){
|
||||||
|
maxHeight = elevationMap[x][y];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void paint(Graphics g){
|
||||||
|
g.clearRect(0, 0, 600, 600);
|
||||||
|
for(int x = 0; x < dimX/4; x++){
|
||||||
|
for(int y = 0; y < dimY/4; y++){
|
||||||
|
g.setColor(new Color(
|
||||||
|
(int)(255 * elevationMap[x*4][y*4] / maxHeight),
|
||||||
|
(int)(255 * elevationMap[x*4][y*4] / maxHeight),
|
||||||
|
(int)(255 * elevationMap[x*4][y*4] / maxHeight)
|
||||||
|
));
|
||||||
|
g.drawRect(x - viewerOffsetX, y - viewerOffsetY, 1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addViewerOffsetX(){
|
||||||
|
viewerOffsetX = viewerOffsetX + 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeViewerOffsetX(){
|
||||||
|
viewerOffsetX = viewerOffsetX - 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addViewerOffsetY(){
|
||||||
|
viewerOffsetY = viewerOffsetY + 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeViewerOffsetY(){
|
||||||
|
viewerOffsetY = viewerOffsetY - 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
package electrosphere.util.worldviewer;
|
||||||
|
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.awt.event.KeyListener;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author amaterasu
|
||||||
|
*/
|
||||||
|
public class TerrainViewerKeyListener implements KeyListener {
|
||||||
|
|
||||||
|
TerrainViewerJComponent jComponent;
|
||||||
|
|
||||||
|
public TerrainViewerKeyListener(TerrainViewerJComponent jComponent){
|
||||||
|
this.jComponent = jComponent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyTyped(KeyEvent e) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyPressed(KeyEvent e) {
|
||||||
|
switch(e.getKeyCode()){
|
||||||
|
case KeyEvent.VK_RIGHT:
|
||||||
|
jComponent.addViewerOffsetX();
|
||||||
|
break;
|
||||||
|
case KeyEvent.VK_LEFT:
|
||||||
|
jComponent.removeViewerOffsetX();
|
||||||
|
break;
|
||||||
|
case KeyEvent.VK_UP:
|
||||||
|
jComponent.removeViewerOffsetY();
|
||||||
|
break;
|
||||||
|
case KeyEvent.VK_DOWN:
|
||||||
|
jComponent.addViewerOffsetY();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyReleased(KeyEvent e) {}
|
||||||
|
|
||||||
|
}
|
||||||
@ -289,8 +289,8 @@
|
|||||||
{
|
{
|
||||||
"messageName" : "Create",
|
"messageName" : "Create",
|
||||||
"data" : [
|
"data" : [
|
||||||
"creatureType",
|
|
||||||
"entityID",
|
"entityID",
|
||||||
|
"creatureType",
|
||||||
"positionX",
|
"positionX",
|
||||||
"positionY",
|
"positionY",
|
||||||
"positionZ"
|
"positionZ"
|
||||||
@ -299,8 +299,8 @@
|
|||||||
{
|
{
|
||||||
"messageName" : "SetPosition",
|
"messageName" : "SetPosition",
|
||||||
"data" : [
|
"data" : [
|
||||||
"time",
|
|
||||||
"entityID",
|
"entityID",
|
||||||
|
"time",
|
||||||
"positionX",
|
"positionX",
|
||||||
"positionY",
|
"positionY",
|
||||||
"positionZ"
|
"positionZ"
|
||||||
@ -309,8 +309,9 @@
|
|||||||
{
|
{
|
||||||
"messageName" : "Move",
|
"messageName" : "Move",
|
||||||
"data" : [
|
"data" : [
|
||||||
"time",
|
|
||||||
"entityID",
|
"entityID",
|
||||||
|
|
||||||
|
"time",
|
||||||
"positionX",
|
"positionX",
|
||||||
"positionY",
|
"positionY",
|
||||||
"positionZ"
|
"positionZ"
|
||||||
@ -325,8 +326,9 @@
|
|||||||
{
|
{
|
||||||
"messageName" : "SetBehaviorTree",
|
"messageName" : "SetBehaviorTree",
|
||||||
"data" : [
|
"data" : [
|
||||||
"time",
|
|
||||||
"entityID",
|
"entityID",
|
||||||
|
|
||||||
|
"time",
|
||||||
"treeType",
|
"treeType",
|
||||||
"treeStatus"
|
"treeStatus"
|
||||||
]
|
]
|
||||||
@ -334,8 +336,8 @@
|
|||||||
{
|
{
|
||||||
"messageName" : "setProperty",
|
"messageName" : "setProperty",
|
||||||
"data" : [
|
"data" : [
|
||||||
"time",
|
|
||||||
"entityID",
|
"entityID",
|
||||||
|
"time",
|
||||||
"propertyType",
|
"propertyType",
|
||||||
"propertyValue"
|
"propertyValue"
|
||||||
]
|
]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user