entity graphics refactor
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				studiorailgun/Renderer/pipeline/head This commit looks good
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	studiorailgun/Renderer/pipeline/head This commit looks good
				
			This commit is contained in:
		
							parent
							
								
									9782e2c6b5
								
							
						
					
					
						commit
						cd0452a77c
					
				| @ -547,14 +547,18 @@ | ||||
|                     "z": 0.0 | ||||
|                 } | ||||
|             }, | ||||
|             "idleData": { | ||||
|                 "animation": { | ||||
|                     "nameFirstPerson" : "BindPose", | ||||
|                     "nameThirdPerson" : "Idle", | ||||
|                     "priorityCategory" : "IDLE" | ||||
|             "graphicsTemplate": { | ||||
|                 "model": { | ||||
|                     "idleData": { | ||||
|                         "animation": { | ||||
|                             "nameFirstPerson" : "BindPose", | ||||
|                             "nameThirdPerson" : "Idle", | ||||
|                             "priorityCategory" : "IDLE" | ||||
|                         } | ||||
|                     }, | ||||
|                     "path" : "Models/creatures/person2/person2_1.glb" | ||||
|                 } | ||||
|             }, | ||||
|             "modelPath" : "Models/creatures/person2/person2_1.glb", | ||||
|             "viewModelData" : { | ||||
|                 "heightFromOrigin" : 1.3, | ||||
|                 "cameraViewDirOffsetY" : -0.3, | ||||
|  | ||||
| @ -431,14 +431,18 @@ | ||||
|                     "z": 0.0 | ||||
|                 } | ||||
|             }, | ||||
|             "idleData": { | ||||
|                 "animation": { | ||||
|                     "nameFirstPerson" : "Idle", | ||||
|                     "nameThirdPerson" : "Idle", | ||||
|                     "priorityCategory" : "IDLE" | ||||
|             "graphicsTemplate": { | ||||
|                 "model": { | ||||
|                     "idleData": { | ||||
|                         "animation": { | ||||
|                             "nameFirstPerson" : "Idle", | ||||
|                             "nameThirdPerson" : "Idle", | ||||
|                             "priorityCategory" : "IDLE" | ||||
|                         } | ||||
|                     }, | ||||
|                     "path" : "Models/creatures/skeleton/skeleton1.glb" | ||||
|                 } | ||||
|             }, | ||||
|             "modelPath" : "Models/creatures/skeleton/skeleton1.glb", | ||||
|             "viewModelData" : { | ||||
|                 "heightFromOrigin" : 1.3, | ||||
|                 "cameraViewDirOffsetY" : -0.3, | ||||
|  | ||||
| @ -11,7 +11,11 @@ | ||||
|             "growthModel": { | ||||
|                 "growthRate" : 0.001 | ||||
|             }, | ||||
|             "modelPath" : "Models/foliage/grass2.fbx" | ||||
|             "graphicsTemplate": { | ||||
|                 "model": { | ||||
|                     "path" : "Models/foliage/grass2.fbx" | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         { | ||||
|             "id" : "oak", | ||||
|  | ||||
| @ -54,7 +54,6 @@ | ||||
|         }, | ||||
|         { | ||||
|             "id" : "Katana2H", | ||||
|             "modelPath" : "Models/items/weapons/katana1alt.glb", | ||||
|             "weaponData" : { | ||||
|                 "weaponClass" : "sword2h", | ||||
|                 "damage" : 10, | ||||
| @ -114,7 +113,17 @@ | ||||
|                 "TARGETABLE", | ||||
|                 "OUTLINE" | ||||
|             ], | ||||
|             "idleAnim" : "Idle", | ||||
|             "graphicsTemplate": { | ||||
|                 "model": { | ||||
|                     "idleData": { | ||||
|                         "animation": { | ||||
|                             "nameThirdPerson" : "Idle", | ||||
|                             "priorityCategory" : "IDLE" | ||||
|                         } | ||||
|                     }, | ||||
|                     "path" : "Models/items/weapons/katana1alt.glb" | ||||
|                 } | ||||
|             }, | ||||
|             "collidable": { | ||||
|                 "type" : "CUBE", | ||||
|                 "dimension1" : 0.04, | ||||
| @ -320,7 +329,6 @@ | ||||
| 
 | ||||
|         { | ||||
|             "id" : "terrainTool", | ||||
|             "modelPath": "Models/basic/geometry/unitvector.glb", | ||||
|             "tokens" : [ | ||||
|                 "GRAVITY", | ||||
|                 "TARGETABLE" | ||||
| @ -328,6 +336,11 @@ | ||||
|             "equipData": { | ||||
|                 "equipClass" : "tool" | ||||
|             }, | ||||
|             "graphicsTemplate": { | ||||
|                 "model": { | ||||
|                     "path" : "Models/basic/geometry/unitvector.glb" | ||||
|                 } | ||||
|             }, | ||||
|             "clientSidePrimary": "OPEN_VOXEL", | ||||
|             "collidable": { | ||||
|                 "type" : "CUBE", | ||||
|  | ||||
| @ -29,7 +29,11 @@ | ||||
|             "tokens": [ | ||||
|                 "GRAVITY" | ||||
|             ], | ||||
|             "modelPath" : "Models/objects/crate2.glb" | ||||
|             "graphicsTemplate": { | ||||
|                 "model": { | ||||
|                     "path" : "Models/objects/crate2.glb" | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     ], | ||||
|  | ||||
| @ -48,7 +48,11 @@ | ||||
|                     "z": 0.0 | ||||
|                 } | ||||
|             }, | ||||
|             "modelPath" : "Models/objects/furniture/torch1.glb", | ||||
|             "graphicsTemplate": { | ||||
|                 "model": { | ||||
|                     "path" : "Models/objects/furniture/torch1.glb" | ||||
|                 } | ||||
|             }, | ||||
|             "tokens": [ | ||||
|             ] | ||||
|         } | ||||
|  | ||||
| @ -3,7 +3,11 @@ | ||||
| 
 | ||||
|         { | ||||
|             "id" : "spawnPoint", | ||||
|             "modelPath" : "Models/gameobj/token.glb", | ||||
|             "graphicsTemplate": { | ||||
|                 "model": { | ||||
|                     "path" : "Models/gameobj/token.glb" | ||||
|                 } | ||||
|             }, | ||||
|             "tokens": [ | ||||
|                 "SPAWNPOINT" | ||||
|             ] | ||||
|  | ||||
| @ -836,13 +836,11 @@ Autodisabling implementation | ||||
| Fix static friction coeff causing player to slide on shallow slopes | ||||
|  - Turns out it needed auto disabling logic | ||||
| Change timescale for test | ||||
| Refactor graphics entity definitions to be under dedicated object | ||||
| 
 | ||||
| # TODO | ||||
| 
 | ||||
| 
 | ||||
| IMMEDIATE SCALING ISSUES | ||||
|  - Always enforce opengl interface across all opengl calls jesus christ the bone uniform bug was impossible | ||||
| 
 | ||||
| Ability to fully reload game engine state without exiting client | ||||
|  - Back out to main menu and load a new level without any values persisting | ||||
|  - Receive a teleport packet from server and flush all game state before requesting state from server again | ||||
| @ -872,6 +870,7 @@ Rearchitecting | ||||
|  - Main render is a ui element (that we can have multiple of) | ||||
|  - Shader handling updates to allow for library based shader compilation | ||||
|   - Also allow injecting consts from the engine itself (ie max lights is dynamically injected, that way never have to worry about .glsl and .java not aligning) | ||||
|  - Cache busting for particle atlas cache | ||||
| 
 | ||||
| Code cleanup | ||||
|  - Rename "BehaviorTree" to be "Component" (what it actually is) | ||||
|  | ||||
| @ -155,7 +155,7 @@ public class FoliageCell { | ||||
|         //queue ambient foliage models | ||||
|         for(FoliageType foliageType : Globals.gameConfigCurrent.getFoliageMap().getFoliageList()){ | ||||
|             if(foliageType.getTokens().contains(FoliageType.TOKEN_AMBIENT)){ | ||||
|                 Globals.assetManager.addModelPathToQueue(foliageType.getModelPath()); | ||||
|                 Globals.assetManager.addModelPathToQueue(foliageType.getGraphicsTemplate().getModel().getPath()); | ||||
|                 Globals.assetManager.addShaderToQueue(vertexPath, fragmentPath); | ||||
|             } | ||||
|         } | ||||
| @ -246,7 +246,7 @@ public class FoliageCell { | ||||
|                 //create entity | ||||
|                 Entity grassEntity = EntityCreationUtils.createClientSpatialEntity(); | ||||
| 
 | ||||
|                 TextureInstancedActor.attachTextureInstancedActor(grassEntity, foliageType.getModelPath(), vertexPath, fragmentPath, dataTexture, drawCount); | ||||
|                 TextureInstancedActor.attachTextureInstancedActor(grassEntity, foliageType.getGraphicsTemplate().getModel().getPath(), vertexPath, fragmentPath, dataTexture, drawCount); | ||||
|                 EntityUtils.getPosition(grassEntity).set(realPosition); | ||||
|                 EntityUtils.getRotation(grassEntity).set(0,0,0,1); | ||||
|                 EntityUtils.getScale(grassEntity).set(1,1,1); | ||||
|  | ||||
| @ -166,7 +166,7 @@ public class ClientEquipState implements BehaviorTree { | ||||
|                 //make sure it's visible | ||||
|                 if(EntityUtils.getActor(toEquip) == null){ | ||||
|                     Item itemData = Globals.gameConfigCurrent.getItemMap().getItem(ItemUtils.getType(toEquip)); | ||||
|                     EntityCreationUtils.makeEntityDrawable(toEquip, itemData.getModelPath()); | ||||
|                     EntityCreationUtils.makeEntityDrawable(toEquip, itemData.getGraphicsTemplate().getModel().getPath()); | ||||
|                     if(itemData.getIdleAnim() != null){ | ||||
|                         toEquip.putData(EntityDataStrings.ANIM_IDLE,itemData.getIdleAnim()); | ||||
|                     } | ||||
|  | ||||
| @ -1,7 +1,6 @@ | ||||
| package electrosphere.entity.state.idle; | ||||
| 
 | ||||
| 
 | ||||
| import electrosphere.net.parser.net.message.SynchronizationMessage; | ||||
| import electrosphere.entity.state.client.firstPerson.FirstPersonTree; | ||||
| import electrosphere.entity.state.movement.groundmove.ClientGroundMovementTree; | ||||
| import electrosphere.entity.state.movement.groundmove.ClientGroundMovementTree.MovementTreeState; | ||||
| @ -49,7 +48,7 @@ public class ClientIdleTree implements BehaviorTree { | ||||
|         //check if this is a creature, if so add its idle data | ||||
|         CreatureData creatureType = Globals.gameConfigCurrent.getCreatureTypeLoader().getType(CreatureUtils.getType(parent)); | ||||
|         if(creatureType != null){ | ||||
|             idleData = creatureType.getIdleData(); | ||||
|             idleData = creatureType.getGraphicsTemplate().getModel().getIdleData(); | ||||
|         } | ||||
|         //TODO: if object, check if object has idle data and add accordingly | ||||
|     } | ||||
| @ -93,7 +92,9 @@ public class ClientIdleTree implements BehaviorTree { | ||||
|                         entityActor.playAnimation(idleData.getAnimation(),true); | ||||
|                         entityActor.incrementAnimationTime(0.0001); | ||||
|                     } | ||||
|                     FirstPersonTree.conditionallyPlayAnimation(parent, idleData.getAnimation()); | ||||
|                     if(idleData != null){ | ||||
|                         FirstPersonTree.conditionallyPlayAnimation(parent, idleData.getAnimation()); | ||||
|                     } | ||||
|                 } | ||||
|                 break; | ||||
|             case NOT_IDLE: | ||||
|  | ||||
| @ -68,6 +68,7 @@ import electrosphere.game.data.creature.type.rotator.RotatorConstraint; | ||||
| import electrosphere.game.data.creature.type.rotator.RotatorItem; | ||||
| import electrosphere.game.data.creature.type.rotator.RotatorSystem; | ||||
| import electrosphere.game.data.foliage.type.FoliageType; | ||||
| import electrosphere.game.data.graphics.GraphicsTemplate; | ||||
| import electrosphere.game.data.item.type.Item; | ||||
| import electrosphere.net.parser.net.message.EntityMessage; | ||||
| import electrosphere.net.parser.net.message.NetworkMessage; | ||||
| @ -110,9 +111,9 @@ public class CommonEntityUtils { | ||||
|         for(String token : rawType.getTokens()){ | ||||
|             switch(token){ | ||||
|                 case "GENERATE_COLLISION_OBJECT": { | ||||
|                     Globals.assetManager.addCollisionMeshToQueue(new PhysicsMeshQueueItem(Globals.clientSceneWrapper.getCollisionEngine(),rawType.getModelPath())); | ||||
|                     Globals.assetManager.addCollisionMeshToQueue(new PhysicsMeshQueueItem(Globals.clientSceneWrapper.getCollisionEngine(),rawType.getGraphicsTemplate().getModel().getPath())); | ||||
|                     Globals.clientSceneWrapper.getScene().registerBehaviorTree(new BehaviorTree() {public void simulate(float deltaTime) { | ||||
|                         DBody collisionObject = Globals.assetManager.fetchCollisionObject(Globals.clientSceneWrapper.getCollisionEngine(),rawType.getModelPath()); | ||||
|                         DBody collisionObject = Globals.assetManager.fetchCollisionObject(Globals.clientSceneWrapper.getCollisionEngine(),rawType.getGraphicsTemplate().getModel().getPath()); | ||||
|                         if(collisionObject != null){ | ||||
|                             Globals.clientSceneWrapper.getScene().deregisterBehaviorTree(this); | ||||
|                             CollisionObjUtils.clientAttachCollisionObjectToEntity(entity, collisionObject, 0, Collidable.TYPE_OBJECT); | ||||
| @ -120,9 +121,9 @@ public class CommonEntityUtils { | ||||
|                     }}); | ||||
|                 } break; | ||||
|                 case "GENERATE_COLLISION_TERRAIN": { | ||||
|                     Globals.assetManager.addCollisionMeshToQueue(new PhysicsMeshQueueItem(Globals.clientSceneWrapper.getCollisionEngine(),rawType.getModelPath())); | ||||
|                     Globals.assetManager.addCollisionMeshToQueue(new PhysicsMeshQueueItem(Globals.clientSceneWrapper.getCollisionEngine(),rawType.getGraphicsTemplate().getModel().getPath())); | ||||
|                     Globals.clientSceneWrapper.getScene().registerBehaviorTree(new BehaviorTree() {public void simulate(float deltaTime) { | ||||
|                         DBody collisionObject = Globals.assetManager.fetchCollisionObject(Globals.clientSceneWrapper.getCollisionEngine(),rawType.getModelPath()); | ||||
|                         DBody collisionObject = Globals.assetManager.fetchCollisionObject(Globals.clientSceneWrapper.getCollisionEngine(),rawType.getGraphicsTemplate().getModel().getPath()); | ||||
|                         if(collisionObject != null){ | ||||
|                             Globals.clientSceneWrapper.getScene().deregisterBehaviorTree(this); | ||||
|                             CollisionObjUtils.clientAttachCollisionObjectToEntity(entity, collisionObject, 0, Collidable.TYPE_TERRAIN); | ||||
| @ -140,9 +141,18 @@ public class CommonEntityUtils { | ||||
|         //Drawable stuff | ||||
|         // | ||||
|         // | ||||
|         if(rawType.getModelPath() != null && EntityUtils.getActor(entity) == null && generateDrawable == true){ | ||||
|             EntityCreationUtils.makeEntityDrawable(entity, rawType.getModelPath()); | ||||
|             entity.putData(EntityDataStrings.DRAW_CAST_SHADOW, true); | ||||
|         if(rawType.getGraphicsTemplate() != null){ | ||||
|             GraphicsTemplate graphicsTemplate = rawType.getGraphicsTemplate(); | ||||
|             if(graphicsTemplate.getModel() != null && graphicsTemplate.getModel().getPath() != null && EntityUtils.getActor(entity) == null && generateDrawable == true){ | ||||
|                 EntityCreationUtils.makeEntityDrawable(entity, graphicsTemplate.getModel().getPath()); | ||||
|                 entity.putData(EntityDataStrings.DRAW_CAST_SHADOW, true); | ||||
|             } | ||||
|             //idle tree & generic stuff all creatures have | ||||
|             if(graphicsTemplate.getModel() != null && graphicsTemplate.getModel().getIdleData() != null){ | ||||
|                 ClientIdleTree idleTree = new ClientIdleTree(entity); | ||||
|                 entity.putData(EntityDataStrings.TREE_IDLE, idleTree); | ||||
|                 Globals.clientScene.registerBehaviorTree(idleTree); | ||||
|             } | ||||
|         } | ||||
|         Actor creatureActor = EntityUtils.getActor(entity); | ||||
| 
 | ||||
| @ -362,12 +372,6 @@ public class CommonEntityUtils { | ||||
|             ClientLifeTree.attachTree(entity,rawType.getHealthSystem()); | ||||
|             Globals.clientScene.registerEntityToTag(entity, EntityTags.LIFE_STATE); | ||||
|         } | ||||
|         //idle tree & generic stuff all creatures have | ||||
|         if(rawType.getIdleData() != null){ | ||||
|             ClientIdleTree idleTree = new ClientIdleTree(entity); | ||||
|             entity.putData(EntityDataStrings.TREE_IDLE, idleTree); | ||||
|             Globals.clientScene.registerBehaviorTree(idleTree); | ||||
|         } | ||||
| 
 | ||||
|         return entity; | ||||
|     } | ||||
| @ -400,9 +404,9 @@ public class CommonEntityUtils { | ||||
|         for(String token : rawType.getTokens()){ | ||||
|             switch(token){ | ||||
|                 case "GENERATE_COLLISION_OBJECT": { | ||||
|                     Globals.assetManager.addCollisionMeshToQueue(new PhysicsMeshQueueItem(realm.getCollisionEngine(),rawType.getModelPath())); | ||||
|                     Globals.assetManager.addCollisionMeshToQueue(new PhysicsMeshQueueItem(realm.getCollisionEngine(),rawType.getGraphicsTemplate().getModel().getPath())); | ||||
|                     ServerBehaviorTreeUtils.attachBTreeToEntity(entity, new BehaviorTree() {public void simulate(float deltaTime) { | ||||
|                         DBody collisionObject = Globals.assetManager.fetchCollisionObject(realm.getCollisionEngine(),rawType.getModelPath()); | ||||
|                         DBody collisionObject = Globals.assetManager.fetchCollisionObject(realm.getCollisionEngine(),rawType.getGraphicsTemplate().getModel().getPath()); | ||||
|                         if(collisionObject != null){ | ||||
|                             ServerBehaviorTreeUtils.detatchBTreeFromEntity(entity, this); | ||||
|                             CollisionObjUtils.serverAttachCollisionObjectToEntity(entity, collisionObject, 0, Collidable.TYPE_OBJECT); | ||||
| @ -410,9 +414,9 @@ public class CommonEntityUtils { | ||||
|                     }}); | ||||
|                 } break; | ||||
|                 case "GENERATE_COLLISION_TERRAIN": { | ||||
|                     Globals.assetManager.addCollisionMeshToQueue(new PhysicsMeshQueueItem(realm.getCollisionEngine(),rawType.getModelPath())); | ||||
|                     Globals.assetManager.addCollisionMeshToQueue(new PhysicsMeshQueueItem(realm.getCollisionEngine(),rawType.getGraphicsTemplate().getModel().getPath())); | ||||
|                     ServerBehaviorTreeUtils.attachBTreeToEntity(entity, new BehaviorTree() {public void simulate(float deltaTime) { | ||||
|                         DBody collisionObject = Globals.assetManager.fetchCollisionObject(realm.getCollisionEngine(),rawType.getModelPath()); | ||||
|                         DBody collisionObject = Globals.assetManager.fetchCollisionObject(realm.getCollisionEngine(),rawType.getGraphicsTemplate().getModel().getPath()); | ||||
|                         if(collisionObject != null){ | ||||
|                             ServerBehaviorTreeUtils.detatchBTreeFromEntity(entity, this); | ||||
|                             CollisionObjUtils.serverAttachCollisionObjectToEntity(entity, collisionObject, 0, Collidable.TYPE_TERRAIN); | ||||
| @ -430,8 +434,16 @@ public class CommonEntityUtils { | ||||
|         //Posing stuff | ||||
|         // | ||||
|         // | ||||
|         if(rawType.getModelPath() != null && EntityUtils.getPoseActor(entity) == null && generateDrawable == true){ | ||||
|             EntityCreationUtils.makeEntityPoseable(entity, rawType.getModelPath()); | ||||
|         if(rawType.getGraphicsTemplate() != null){ | ||||
|             GraphicsTemplate graphicsTemplate = rawType.getGraphicsTemplate(); | ||||
|             if(graphicsTemplate.getModel() != null && graphicsTemplate.getModel().getPath() != null && EntityUtils.getPoseActor(entity) == null && generateDrawable == true){ | ||||
|                 EntityCreationUtils.makeEntityPoseable(entity, graphicsTemplate.getModel().getPath()); | ||||
|                 entity.putData(EntityDataStrings.DRAW_CAST_SHADOW, true); | ||||
|             } | ||||
|             //idle tree & generic stuff all creatures have | ||||
|             if(graphicsTemplate.getModel() != null && graphicsTemplate.getModel().getIdleData() != null){ | ||||
|                 ServerIdleTree.attachTree(entity, graphicsTemplate.getModel().getIdleData()); | ||||
|             } | ||||
|         } | ||||
|         PoseActor creatureActor = EntityUtils.getPoseActor(entity); | ||||
|         // | ||||
| @ -659,10 +671,6 @@ public class CommonEntityUtils { | ||||
|             ServerLifeTree.attachTree(entity, rawType.getHealthSystem()); | ||||
|             ServerEntityTagUtils.attachTagToEntity(entity, EntityTags.LIFE_STATE); | ||||
|         } | ||||
|         //idle tree & generic stuff all creatures have | ||||
|         if(rawType.getIdleData() != null){ | ||||
|             ServerIdleTree.attachTree(entity, rawType.getIdleData()); | ||||
|         } | ||||
| 
 | ||||
|          | ||||
|         return entity; | ||||
|  | ||||
| @ -39,7 +39,6 @@ public class FoliageUtils { | ||||
|             rVal = ProceduralTree.clientGenerateProceduralTree(type, 0); | ||||
|         } else { | ||||
|             rVal = EntityCreationUtils.createClientSpatialEntity(); | ||||
|             EntityCreationUtils.makeEntityDrawable(rVal, rawType.getModelPath()); | ||||
|         } | ||||
|         // | ||||
|         // | ||||
|  | ||||
| @ -6,7 +6,6 @@ import electrosphere.game.data.collidable.CollidableTemplate; | ||||
| import electrosphere.game.data.collidable.HitboxData; | ||||
| import electrosphere.game.data.common.light.PointLightDescription; | ||||
| import electrosphere.game.data.creature.type.HealthSystem; | ||||
| import electrosphere.game.data.creature.type.IdleData; | ||||
| import electrosphere.game.data.creature.type.LookAtSystem; | ||||
| import electrosphere.game.data.creature.type.ViewModelData; | ||||
| import electrosphere.game.data.creature.type.ai.AITreeData; | ||||
| @ -78,21 +77,11 @@ public class CommonEntityType { | ||||
|      */ | ||||
|     LookAtSystem lookAtSystem; | ||||
| 
 | ||||
|     /** | ||||
|      * The model path for this creature | ||||
|      */ | ||||
|     String modelPath; | ||||
| 
 | ||||
|     /** | ||||
|      * The view model data for this creature | ||||
|      */ | ||||
|     ViewModelData viewModelData; | ||||
| 
 | ||||
|     /** | ||||
|      * The idle data for this creature | ||||
|      */ | ||||
|     IdleData idleData; | ||||
| 
 | ||||
|     /** | ||||
|      * The block system for this creature | ||||
|      */ | ||||
| @ -167,14 +156,6 @@ public class CommonEntityType { | ||||
|         return tokens; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Gets the path for the model for this creature | ||||
|      * @return The model path | ||||
|      */ | ||||
|     public String getModelPath() { | ||||
|         return modelPath; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Gets the list of data of movement types available to this creature | ||||
|      * @return The list of movement type data | ||||
| @ -255,14 +236,6 @@ public class CommonEntityType { | ||||
|         return viewModelData; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Gets the idle data for this creature type (ie animation data) | ||||
|      * @return The idle data | ||||
|      */ | ||||
|     public IdleData getIdleData(){ | ||||
|         return idleData; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Gets the block system data for this creature type | ||||
|      * @return The block system data | ||||
|  | ||||
| @ -13,6 +13,16 @@ public class GraphicsTemplate { | ||||
|     //??? TODO: investigate | ||||
|     Map<String,ShaderSet> shaderMap; | ||||
| 
 | ||||
|     /** | ||||
|      * The procedural model definition | ||||
|      */ | ||||
|     ProceduralModel proceduralModel; | ||||
| 
 | ||||
|     /** | ||||
|      * The non-procedural model definition | ||||
|      */ | ||||
|     NonproceduralModel model; | ||||
| 
 | ||||
|     public List<String> getShaderOverrideMeshList(){ | ||||
|         return shaderOverrideMeshList; | ||||
|     } | ||||
| @ -21,6 +31,30 @@ public class GraphicsTemplate { | ||||
|         return shaderMap; | ||||
|     } | ||||
| 
 | ||||
|     public void setShaderOverrideMeshList(List<String> shaderOverrideMeshList) { | ||||
|         this.shaderOverrideMeshList = shaderOverrideMeshList; | ||||
|     } | ||||
| 
 | ||||
|     public void setShaderMap(Map<String, ShaderSet> shaderMap) { | ||||
|         this.shaderMap = shaderMap; | ||||
|     } | ||||
| 
 | ||||
|     public ProceduralModel getProceduralModel() { | ||||
|         return proceduralModel; | ||||
|     } | ||||
| 
 | ||||
|     public void setProceduralModel(ProceduralModel proceduralModel) { | ||||
|         this.proceduralModel = proceduralModel; | ||||
|     } | ||||
| 
 | ||||
|     public NonproceduralModel getModel() { | ||||
|         return model; | ||||
|     } | ||||
| 
 | ||||
|     public void setModel(NonproceduralModel model) { | ||||
|         this.model = model; | ||||
|     } | ||||
| 
 | ||||
|      | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,38 @@ | ||||
| package electrosphere.game.data.graphics; | ||||
| 
 | ||||
| import electrosphere.game.data.creature.type.IdleData; | ||||
| 
 | ||||
| /** | ||||
|  * A non-procedural model | ||||
|  */ | ||||
| public class NonproceduralModel { | ||||
| 
 | ||||
|     /** | ||||
|      * The path to the model | ||||
|      */ | ||||
|     String path; | ||||
| 
 | ||||
|     /** | ||||
|      * The idle data for the model | ||||
|      */ | ||||
|     IdleData idleData; | ||||
| 
 | ||||
|     public String getPath() { | ||||
|         return path; | ||||
|     } | ||||
| 
 | ||||
|     public void setPath(String path) { | ||||
|         this.path = path; | ||||
|     } | ||||
| 
 | ||||
|     public IdleData getIdleData() { | ||||
|         return idleData; | ||||
|     } | ||||
| 
 | ||||
|     public void setIdleData(IdleData idleData) { | ||||
|         this.idleData = idleData; | ||||
|     } | ||||
| 
 | ||||
|      | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,23 @@ | ||||
| package electrosphere.game.data.graphics; | ||||
| 
 | ||||
| import electrosphere.game.data.foliage.type.TreeModel; | ||||
| 
 | ||||
| /** | ||||
|  * A procedurally-generated model | ||||
|  */ | ||||
| public class ProceduralModel { | ||||
|      | ||||
|     /** | ||||
|      * Model for generating a procedural tree | ||||
|      */ | ||||
|     TreeModel treeModel; | ||||
| 
 | ||||
|     /** | ||||
|      * Gets the procedural tree model | ||||
|      * @return The procedural tree model if it exists, null otherwise | ||||
|      */ | ||||
|     public TreeModel getTreeModel(){ | ||||
|         return treeModel; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -54,9 +54,9 @@ public class CharacterCustomizer { | ||||
|         Globals.viewMatrix = CameraEntityUtils.getCameraViewMatrix(Globals.playerCamera); | ||||
| 
 | ||||
|         //create actor panel | ||||
|         Actor characterActor = ActorUtils.createActorFromModelPath(selectedRaceType.getModelPath()); | ||||
|         Actor characterActor = ActorUtils.createActorFromModelPath(selectedRaceType.getGraphicsTemplate().getModel().getPath()); | ||||
|         ActorPanel actorPanel = ActorPanel.create(characterActor); | ||||
|         actorPanel.setAnimation(selectedRaceType.getIdleData().getAnimation().getNameThirdPerson()); | ||||
|         actorPanel.setAnimation(selectedRaceType.getGraphicsTemplate().getModel().getIdleData().getAnimation().getNameThirdPerson()); | ||||
|         actorPanel.setPosition(new Vector3f(0,-0.5f,-0.6f)); | ||||
|         actorPanel.setScale(new Vector3f(1.0f)); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user