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,6 +547,8 @@
|
||||
"z": 0.0
|
||||
}
|
||||
},
|
||||
"graphicsTemplate": {
|
||||
"model": {
|
||||
"idleData": {
|
||||
"animation": {
|
||||
"nameFirstPerson" : "BindPose",
|
||||
@ -554,7 +556,9 @@
|
||||
"priorityCategory" : "IDLE"
|
||||
}
|
||||
},
|
||||
"modelPath" : "Models/creatures/person2/person2_1.glb",
|
||||
"path" : "Models/creatures/person2/person2_1.glb"
|
||||
}
|
||||
},
|
||||
"viewModelData" : {
|
||||
"heightFromOrigin" : 1.3,
|
||||
"cameraViewDirOffsetY" : -0.3,
|
||||
|
||||
@ -431,6 +431,8 @@
|
||||
"z": 0.0
|
||||
}
|
||||
},
|
||||
"graphicsTemplate": {
|
||||
"model": {
|
||||
"idleData": {
|
||||
"animation": {
|
||||
"nameFirstPerson" : "Idle",
|
||||
@ -438,7 +440,9 @@
|
||||
"priorityCategory" : "IDLE"
|
||||
}
|
||||
},
|
||||
"modelPath" : "Models/creatures/skeleton/skeleton1.glb",
|
||||
"path" : "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,8 +92,10 @@ public class ClientIdleTree implements BehaviorTree {
|
||||
entityActor.playAnimation(idleData.getAnimation(),true);
|
||||
entityActor.incrementAnimationTime(0.0001);
|
||||
}
|
||||
if(idleData != null){
|
||||
FirstPersonTree.conditionallyPlayAnimation(parent, idleData.getAnimation());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NOT_IDLE:
|
||||
break;
|
||||
|
||||
@ -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,10 +141,19 @@ public class CommonEntityUtils {
|
||||
//Drawable stuff
|
||||
//
|
||||
//
|
||||
if(rawType.getModelPath() != null && EntityUtils.getActor(entity) == null && generateDrawable == true){
|
||||
EntityCreationUtils.makeEntityDrawable(entity, rawType.getModelPath());
|
||||
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