reorganization + logging + networking fixes

This commit is contained in:
austin 2021-06-27 14:33:13 -04:00
parent 375e457f81
commit d889e6126c
25 changed files with 290 additions and 54 deletions

View File

@ -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" : [
{

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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));
}

View File

@ -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;
}

View File

@ -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);
}
}

View 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);
}
}
}

View 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);
}
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;
}

View File

@ -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;

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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:

View File

@ -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
*/

View File

@ -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;
}

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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();

View File

@ -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);
}

View File

@ -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"
]
}
]
},