fix katana idle animations
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good

This commit is contained in:
austin 2024-10-21 10:40:58 -04:00
parent 496172680f
commit b9f0eef20e
9 changed files with 21 additions and 15 deletions

View File

@ -117,6 +117,7 @@
"model": { "model": {
"idleData": { "idleData": {
"animation": { "animation": {
"nameFirstPerson" : "Idle",
"nameThirdPerson" : "Idle", "nameThirdPerson" : "Idle",
"priorityCategory" : "IDLE" "priorityCategory" : "IDLE"
} }

View File

@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file #maven.buildNumber.plugin properties file
#Mon Oct 21 09:29:02 EDT 2024 #Mon Oct 21 09:58:24 EDT 2024
buildNumber=362 buildNumber=363

View File

@ -43,7 +43,6 @@
- Spawn player in a town with a quest to complete a nearby dungeon - Spawn player in a town with a quest to complete a nearby dungeon
+ bug fixes + bug fixes
Fix idle animations
Fix light cluster mapping for foliage shader Fix light cluster mapping for foliage shader
Fix foliage placement Fix foliage placement
Fix lights not being deleted Fix lights not being deleted
@ -51,5 +50,6 @@
Fix block tree preventing initiating an attack Fix block tree preventing initiating an attack
Fix equipping sword on toolbar Fix equipping sword on toolbar
Fix return to title menu synchronization bug Fix return to title menu synchronization bug
Fix particles not spawning in correct positions
+ unreproducible bugs + unreproducible bugs

View File

@ -880,6 +880,7 @@ Fix inventory null pointer check on virtualaudiomanager
(10/21/2024) (10/21/2024)
Fix inventory message for undefined id on client Fix inventory message for undefined id on client
Fix movement audio service when audio engine disabled Fix movement audio service when audio engine disabled
Fix idle animations (for katana)

View File

@ -113,6 +113,7 @@ public class ClientParticleEmitterComponent implements BehaviorTree {
Globals.clientSceneWrapper.getScene().registerBehaviorTree(rVal); Globals.clientSceneWrapper.getScene().registerBehaviorTree(rVal);
return rVal; return rVal;
} }
/** /**
* <p> * <p>
* Detatches this tree from the entity. * Detatches this tree from the entity.
@ -122,6 +123,7 @@ public class ClientParticleEmitterComponent implements BehaviorTree {
*/ */
public static void detachTree(Entity entity, BehaviorTree tree){ public static void detachTree(Entity entity, BehaviorTree tree){
} }
/** /**
* <p> * <p>
* Gets the ClientEquipState of the entity * Gets the ClientEquipState of the entity
@ -132,4 +134,5 @@ public class ClientParticleEmitterComponent implements BehaviorTree {
public static ClientEquipState getClientEquipState(Entity entity){ public static ClientEquipState getClientEquipState(Entity entity){
return (ClientEquipState)entity.getData(EntityDataStrings.TREE_CLIENTPARTICLEEMITTERSTATE); return (ClientEquipState)entity.getData(EntityDataStrings.TREE_CLIENTPARTICLEEMITTERSTATE);
} }
} }

View File

@ -10,7 +10,6 @@ import electrosphere.entity.EntityDataStrings;
import electrosphere.entity.EntityUtils; import electrosphere.entity.EntityUtils;
import electrosphere.entity.btree.BehaviorTree; import electrosphere.entity.btree.BehaviorTree;
import electrosphere.entity.types.creature.CreatureUtils; import electrosphere.entity.types.creature.CreatureUtils;
import electrosphere.game.data.creature.type.CreatureData;
import electrosphere.game.data.creature.type.IdleData; import electrosphere.game.data.creature.type.IdleData;
import electrosphere.net.synchronization.annotation.SyncedField; import electrosphere.net.synchronization.annotation.SyncedField;
import electrosphere.net.synchronization.annotation.SynchronizableEnum; import electrosphere.net.synchronization.annotation.SynchronizableEnum;
@ -42,15 +41,12 @@ public class ClientIdleTree implements BehaviorTree {
* Creates an idle tree * Creates an idle tree
* @param e the entity to attach the tree to * @param e the entity to attach the tree to
*/ */
public ClientIdleTree(Entity e, Object ... params){ private ClientIdleTree(Entity e, Object ... params){
state = IdleTreeState.IDLE; state = IdleTreeState.IDLE;
parent = e; parent = e;
//check if this is a creature, if so add its idle data if(params.length > 0 && params[0] instanceof IdleData){
CreatureData creatureType = Globals.gameConfigCurrent.getCreatureTypeLoader().getType(CreatureUtils.getType(parent)); idleData = (IdleData)params[0];
if(creatureType != null){
idleData = creatureType.getGraphicsTemplate().getModel().getIdleData();
} }
//TODO: if object, check if object has idle data and add accordingly
} }
/** /**
@ -112,6 +108,8 @@ public class ClientIdleTree implements BehaviorTree {
rVal = true; rVal = true;
} }
} }
} else {
rVal = true;
} }
return rVal; return rVal;
} }

View File

@ -150,6 +150,8 @@ public class ServerIdleTree implements BehaviorTree {
rVal = true; rVal = true;
} }
} }
} else {
rVal = true;
} }
return rVal; return rVal;
} }

View File

@ -152,9 +152,10 @@ public class CommonEntityUtils {
} }
//idle tree & generic stuff all creatures have //idle tree & generic stuff all creatures have
if(graphicsTemplate.getModel() != null && graphicsTemplate.getModel().getIdleData() != null){ if(graphicsTemplate.getModel() != null && graphicsTemplate.getModel().getIdleData() != null){
ClientIdleTree idleTree = new ClientIdleTree(entity); ClientIdleTree.attachTree(entity, graphicsTemplate.getModel().getIdleData());
entity.putData(EntityDataStrings.TREE_IDLE, idleTree); // ClientIdleTree idleTree = new ClientIdleTree(entity);
Globals.clientScene.registerBehaviorTree(idleTree); // entity.putData(EntityDataStrings.TREE_IDLE, idleTree);
// Globals.clientScene.registerBehaviorTree(idleTree);
} }
} }
Actor creatureActor = EntityUtils.getActor(entity); Actor creatureActor = EntityUtils.getActor(entity);

View File

@ -152,10 +152,10 @@ public class Actor {
return false; return false;
} }
for(ActorAnimationMask mask : animationQueue){ for(ActorAnimationMask mask : animationQueue){
if(mask.getAnimationName().contains(animationData.getNameFirstPerson())){ if(animationData.getNameFirstPerson() != null && mask.getAnimationName().contains(animationData.getNameFirstPerson())){
return true; return true;
} }
if(mask.getAnimationName().contains(animationData.getNameThirdPerson())){ if(animationData.getNameThirdPerson() != null && mask.getAnimationName().contains(animationData.getNameThirdPerson())){
return true; return true;
} }
} }