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);
|
||||
Vector3f position = EntityUtils.getEntityPosition(Globals.playerCharacter);
|
||||
EntityMessage outgoingMessage = EntityMessage.constructMoveMessage(
|
||||
System.currentTimeMillis(),
|
||||
Globals.playerCharacter.getId(),
|
||||
System.currentTimeMillis(),
|
||||
position.x,
|
||||
position.y,
|
||||
position.z
|
||||
|
||||
@ -81,8 +81,8 @@ public class MovementTree {
|
||||
if(Globals.mainConfig.runServer){
|
||||
Globals.server.broadcastMessage(
|
||||
EntityMessage.constructMoveMessage(
|
||||
System.currentTimeMillis(),
|
||||
parent.getId(),
|
||||
System.currentTimeMillis(),
|
||||
message.getpositionX(),
|
||||
message.getpositionY(),
|
||||
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);
|
||||
|
||||
//initialize the terrain manager (server only)
|
||||
initServerGameTerrainManager();
|
||||
if(FLAG_INIT_SERVER){
|
||||
initServerGameTerrainManager();
|
||||
}
|
||||
|
||||
|
||||
//init the data of the world
|
||||
initServerGameWorldData();
|
||||
if(FLAG_INIT_SERVER){
|
||||
initServerGameWorldData();
|
||||
}
|
||||
|
||||
//initialize the server thread (server only)
|
||||
if(FLAG_INIT_SERVER){
|
||||
@ -111,7 +115,7 @@ public class LoadingThread extends Thread {
|
||||
initDynamicCellManager();
|
||||
|
||||
//collision engine
|
||||
initCollisionEngine();
|
||||
initCollisionEngine(FLAG_INIT_SERVER);
|
||||
|
||||
//initialize the basic graphical entities of the world (skybox, camera)
|
||||
initWorldBaseGraphicalEntities();
|
||||
@ -173,7 +177,7 @@ public class LoadingThread extends Thread {
|
||||
initDynamicCellManager();
|
||||
|
||||
//collision engine
|
||||
initCollisionEngine();
|
||||
initCollisionEngine(FLAG_INIT_SERVER);
|
||||
|
||||
//initialize the basic graphical entities of the world (skybox, camera)
|
||||
initWorldBaseGraphicalEntities();
|
||||
@ -293,8 +297,8 @@ public class LoadingThread extends Thread {
|
||||
Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager);
|
||||
}
|
||||
|
||||
static void initCollisionEngine(){
|
||||
if(Globals.mainConfig.runServer){
|
||||
static void initCollisionEngine(boolean FLAG_INIT_SERVER){
|
||||
if(FLAG_INIT_SERVER){
|
||||
Globals.commonWorldData = new CommonWorldData(Globals.serverWorldData, Globals.serverTerrainManager);
|
||||
} else {
|
||||
Globals.commonWorldData = new CommonWorldData(Globals.clientWorldData, Globals.clientTerrainManager);
|
||||
@ -429,13 +433,13 @@ public class LoadingThread extends Thread {
|
||||
// }
|
||||
|
||||
|
||||
// for(int i = 0; i < 10; i++){
|
||||
// Random rand = new Random();
|
||||
// String treePath = "Models/tree1.fbx";
|
||||
// Entity tree = EntityUtils.spawnDrawableEntity(treePath);
|
||||
// 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));
|
||||
// }
|
||||
for(int i = 0; i < 10; i++){
|
||||
Random rand = new Random();
|
||||
String treePath = "Models/tree1.fbx";
|
||||
Entity tree = EntityUtils.spawnDrawableEntity(treePath);
|
||||
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));
|
||||
}
|
||||
|
||||
Entity sword = ItemUtils.spawnBasicItem(2);
|
||||
Entity testHomie = CreatureUtils.spawnBasicCreature(0, 0.1f, 0.5f);
|
||||
|
||||
@ -28,6 +28,7 @@ import org.joml.Vector3f;
|
||||
import org.lwjgl.glfw.*;
|
||||
import static org.lwjgl.glfw.GLFW.*;
|
||||
import electrosphere.util.ModelLoader;
|
||||
import electrosphere.util.worldviewer.TerrainViewer;
|
||||
import electrosphere.util.Utilities;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@ -111,6 +112,9 @@ public class Main {
|
||||
//init global variables
|
||||
Globals.initGlobals();
|
||||
|
||||
//debug: create terrain/world viewer
|
||||
TerrainViewer.runViewer();
|
||||
|
||||
//create the drawing context
|
||||
Globals.renderingEngine = new RenderingEngine();
|
||||
Globals.renderingEngine.createOpenglContext();
|
||||
|
||||
@ -15,14 +15,14 @@ public class NetUtils {
|
||||
static int port = DEFAULT_PORT;
|
||||
static String address = "127.0.0.1";
|
||||
|
||||
public static EntityMessage createSpawnEntityMessage(Entity e){
|
||||
EntityMessage rVal = EntityMessage.constructCreateMessage(e.getId(), CreatureUtils.getCreatureType(e), 0.0f, 0.0f, 0.0f);
|
||||
return rVal;
|
||||
}
|
||||
// public static EntityMessage createSpawnEntityMessage(Entity e){
|
||||
// EntityMessage rVal = EntityMessage.constructCreateMessage(e.getId(), CreatureUtils.getCreatureType(e), 0.0f, 0.0f, 0.0f);
|
||||
// return rVal;
|
||||
// }
|
||||
|
||||
public static EntityMessage createSetCreatureControllerIdEntityMessage(Entity 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;
|
||||
}
|
||||
|
||||
|
||||
@ -51,7 +51,7 @@ public class ClientProtocol {
|
||||
System.out.println("Spawn ID " + message.getentityID());
|
||||
Entity newlySpawnedEntity = CreatureUtils.spawnBasicCreature(message.getcreatureType(), 0.005f, 0.025f);
|
||||
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());
|
||||
break;
|
||||
case DESTROY:
|
||||
|
||||
@ -165,18 +165,18 @@ public class EntityMessage extends NetworkMessage {
|
||||
public static EntityMessage parseCreateMessage(List<Byte> byteStream){
|
||||
EntityMessage rVal = new EntityMessage(EntityMessageType.CREATE);
|
||||
stripPacketHeader(byteStream);
|
||||
rVal.setcreatureType(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||
rVal.setcreatureType(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||
rVal.setpositionX(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||
rVal.setpositionY(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||
rVal.setpositionZ(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||
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);
|
||||
rVal.setcreatureType(creatureType);
|
||||
rVal.setentityID(entityID);
|
||||
rVal.setcreatureType(creatureType);
|
||||
rVal.setpositionX(positionX);
|
||||
rVal.setpositionY(positionY);
|
||||
rVal.setpositionZ(positionZ);
|
||||
@ -187,18 +187,18 @@ public class EntityMessage extends NetworkMessage {
|
||||
public static EntityMessage parseSetPositionMessage(List<Byte> byteStream){
|
||||
EntityMessage rVal = new EntityMessage(EntityMessageType.SETPOSITION);
|
||||
stripPacketHeader(byteStream);
|
||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||
rVal.setpositionX(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||
rVal.setpositionY(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||
rVal.setpositionZ(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||
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);
|
||||
rVal.settime(time);
|
||||
rVal.setentityID(entityID);
|
||||
rVal.settime(time);
|
||||
rVal.setpositionX(positionX);
|
||||
rVal.setpositionY(positionY);
|
||||
rVal.setpositionZ(positionZ);
|
||||
@ -209,18 +209,18 @@ public class EntityMessage extends NetworkMessage {
|
||||
public static EntityMessage parseMoveMessage(List<Byte> byteStream){
|
||||
EntityMessage rVal = new EntityMessage(EntityMessageType.MOVE);
|
||||
stripPacketHeader(byteStream);
|
||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||
rVal.setpositionX(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||
rVal.setpositionY(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||
rVal.setpositionZ(ByteStreamUtils.popFloatFromByteQueue(byteStream));
|
||||
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);
|
||||
rVal.settime(time);
|
||||
rVal.setentityID(entityID);
|
||||
rVal.settime(time);
|
||||
rVal.setpositionX(positionX);
|
||||
rVal.setpositionY(positionY);
|
||||
rVal.setpositionZ(positionZ);
|
||||
@ -245,17 +245,17 @@ public class EntityMessage extends NetworkMessage {
|
||||
public static EntityMessage parseSetBehaviorTreeMessage(List<Byte> byteStream){
|
||||
EntityMessage rVal = new EntityMessage(EntityMessageType.SETBEHAVIORTREE);
|
||||
stripPacketHeader(byteStream);
|
||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||
rVal.settreeType(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||
rVal.settreeStatus(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||
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);
|
||||
rVal.settime(time);
|
||||
rVal.setentityID(entityID);
|
||||
rVal.settime(time);
|
||||
rVal.settreeType(treeType);
|
||||
rVal.settreeStatus(treeStatus);
|
||||
rVal.serialize();
|
||||
@ -265,17 +265,17 @@ public class EntityMessage extends NetworkMessage {
|
||||
public static EntityMessage parsesetPropertyMessage(List<Byte> byteStream){
|
||||
EntityMessage rVal = new EntityMessage(EntityMessageType.SETPROPERTY);
|
||||
stripPacketHeader(byteStream);
|
||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||
rVal.setentityID(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||
rVal.settime(ByteStreamUtils.popLongFromByteQueue(byteStream));
|
||||
rVal.setpropertyType(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||
rVal.setpropertyValue(ByteStreamUtils.popIntFromByteQueue(byteStream));
|
||||
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);
|
||||
rVal.settime(time);
|
||||
rVal.setentityID(entityID);
|
||||
rVal.settime(time);
|
||||
rVal.setpropertyType(propertyType);
|
||||
rVal.setpropertyValue(propertyValue);
|
||||
rVal.serialize();
|
||||
@ -292,11 +292,11 @@ public class EntityMessage extends NetworkMessage {
|
||||
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
||||
//entity messaage header
|
||||
rawBytes[1] = TypeBytes.ENTITY_MESSAGE_TYPE_CREATE;
|
||||
intValues = ByteStreamUtils.serializeIntToBytes(creatureType);
|
||||
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
||||
for(int i = 0; i < 4; i++){
|
||||
rawBytes[2+i] = intValues[i];
|
||||
}
|
||||
intValues = ByteStreamUtils.serializeIntToBytes(entityID);
|
||||
intValues = ByteStreamUtils.serializeIntToBytes(creatureType);
|
||||
for(int i = 0; i < 4; i++){
|
||||
rawBytes[6+i] = intValues[i];
|
||||
}
|
||||
@ -316,13 +316,13 @@ public class EntityMessage extends NetworkMessage {
|
||||
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
||||
//entity messaage header
|
||||
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);
|
||||
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);
|
||||
for(int i = 0; i < 4; i++){
|
||||
@ -340,13 +340,13 @@ public class EntityMessage extends NetworkMessage {
|
||||
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
||||
//entity messaage header
|
||||
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);
|
||||
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);
|
||||
for(int i = 0; i < 4; i++){
|
||||
@ -375,13 +375,13 @@ public class EntityMessage extends NetworkMessage {
|
||||
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
||||
//entity messaage header
|
||||
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);
|
||||
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);
|
||||
for(int i = 0; i < 4; i++){
|
||||
@ -398,13 +398,13 @@ public class EntityMessage extends NetworkMessage {
|
||||
rawBytes[0] = TypeBytes.MESSAGE_TYPE_ENTITY;
|
||||
//entity messaage header
|
||||
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);
|
||||
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);
|
||||
for(int i = 0; i < 4; i++){
|
||||
|
||||
@ -123,7 +123,15 @@ public class ServerConnectionHandler implements Runnable {
|
||||
|
||||
} else {
|
||||
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.hasControllerPlayerId(currentEntity)){
|
||||
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",
|
||||
"data" : [
|
||||
"creatureType",
|
||||
"entityID",
|
||||
"creatureType",
|
||||
"positionX",
|
||||
"positionY",
|
||||
"positionZ"
|
||||
@ -299,8 +299,8 @@
|
||||
{
|
||||
"messageName" : "SetPosition",
|
||||
"data" : [
|
||||
"time",
|
||||
"entityID",
|
||||
"time",
|
||||
"positionX",
|
||||
"positionY",
|
||||
"positionZ"
|
||||
@ -309,8 +309,9 @@
|
||||
{
|
||||
"messageName" : "Move",
|
||||
"data" : [
|
||||
"time",
|
||||
"entityID",
|
||||
|
||||
"time",
|
||||
"positionX",
|
||||
"positionY",
|
||||
"positionZ"
|
||||
@ -325,8 +326,9 @@
|
||||
{
|
||||
"messageName" : "SetBehaviorTree",
|
||||
"data" : [
|
||||
"time",
|
||||
"entityID",
|
||||
|
||||
"time",
|
||||
"treeType",
|
||||
"treeStatus"
|
||||
]
|
||||
@ -334,8 +336,8 @@
|
||||
{
|
||||
"messageName" : "setProperty",
|
||||
"data" : [
|
||||
"time",
|
||||
"entityID",
|
||||
"time",
|
||||
"propertyType",
|
||||
"propertyValue"
|
||||
]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user