play audio with block state
	
		
			
	
		
	
	
		
	
		
			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
							
								
									02c23d6e28
								
							
						
					
					
						commit
						859670d3b6
					
				| @ -290,6 +290,9 @@ | |||||||
|                             "priorityCategory": "MOVEMENT_MODIFIER", |                             "priorityCategory": "MOVEMENT_MODIFIER", | ||||||
|                             "boneGroups" : ["armLeft", "armRight", "handLeft", "handRight"] |                             "boneGroups" : ["armLeft", "armRight", "handLeft", "handRight"] | ||||||
|                         }, |                         }, | ||||||
|  |                         "mainAudio" : { | ||||||
|  |                             "audioPath" : "Audio/weapons/swordUnsheath1.ogg" | ||||||
|  |                         }, | ||||||
|                         "defaults" : [ |                         "defaults" : [ | ||||||
|                             { |                             { | ||||||
|                                 "equipPoint" : "handRight", |                                 "equipPoint" : "handRight", | ||||||
|  | |||||||
| @ -462,12 +462,18 @@ public class Globals { | |||||||
|      * Inits default audio resources |      * Inits default audio resources | ||||||
|      */ |      */ | ||||||
|     public static void initDefaultAudioResources(){ |     public static void initDefaultAudioResources(){ | ||||||
|  |         String[] audioToInit = new String[]{ | ||||||
|  |             "/Audio/inventoryGrabItem.ogg", | ||||||
|  |             "/Audio/inventorySlotItem.ogg", | ||||||
|  |             "/Audio/openMenu.ogg", | ||||||
|  |             "/Audio/closeMenu.ogg", | ||||||
|  |             "/Audio/ambienceWind1SeamlessMono.ogg", | ||||||
|  |             "/Audio/weapons/swordUnsheath1.ogg", | ||||||
|  |         }; | ||||||
|         LoggerInterface.loggerStartup.INFO("Loading default audio resources"); |         LoggerInterface.loggerStartup.INFO("Loading default audio resources"); | ||||||
|         Globals.assetManager.addAudioPathToQueue("/Audio/inventoryGrabItem.ogg"); |         for(String path : audioToInit){ | ||||||
|         Globals.assetManager.addAudioPathToQueue("/Audio/inventorySlotItem.ogg"); |             Globals.assetManager.addAudioPathToQueue(path); | ||||||
|         Globals.assetManager.addAudioPathToQueue("/Audio/openMenu.ogg"); |         } | ||||||
|         Globals.assetManager.addAudioPathToQueue("/Audio/closeMenu.ogg"); |  | ||||||
|         Globals.assetManager.addAudioPathToQueue("/Audio/ambienceWind1SeamlessMono.ogg"); |  | ||||||
|         Globals.assetManager.loadAssetsInQueue(); |         Globals.assetManager.loadAssetsInQueue(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -346,17 +346,19 @@ public class AssetManager { | |||||||
|     // |     // | ||||||
|      |      | ||||||
|     public void addAudioPathToQueue(String path){ |     public void addAudioPathToQueue(String path){ | ||||||
|         if(!audioInQueue.contains(path) && !audioLoadedIntoMemory.containsKey(path)){ |         String sanitizedPath = FileUtils.sanitizeFilePath(path); | ||||||
|             audioInQueue.add(path); |         if(!audioInQueue.contains(sanitizedPath) && !audioLoadedIntoMemory.containsKey(sanitizedPath)){ | ||||||
|  |             audioInQueue.add(sanitizedPath); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     public AudioBuffer fetchAudio(String path){ |     public AudioBuffer fetchAudio(String path){ | ||||||
|         AudioBuffer rVal = null; |         AudioBuffer rVal = null; | ||||||
|         if(audioLoadedIntoMemory.containsKey(path)){ |         String sanitizedPath = FileUtils.sanitizeFilePath(path); | ||||||
|             rVal = audioLoadedIntoMemory.get(path); |         if(audioLoadedIntoMemory.containsKey(sanitizedPath)){ | ||||||
|  |             rVal = audioLoadedIntoMemory.get(sanitizedPath); | ||||||
|         } else { |         } else { | ||||||
|             LoggerInterface.loggerAudio.WARNING("Failed to find audio " + path); |             LoggerInterface.loggerAudio.WARNING("Failed to find audio " + sanitizedPath); | ||||||
|         } |         } | ||||||
|         return rVal; |         return rVal; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -109,6 +109,11 @@ public class StateTransitionUtil { | |||||||
|                 animation = state.getAnimation.get(); |                 animation = state.getAnimation.get(); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  |             TreeDataAudio audioData = state.audioData; | ||||||
|  |             if(state.getAudio != null && state.getAudio.get() != null){ | ||||||
|  |                 audioData = state.getAudio.get(); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|             // |             // | ||||||
|             //Play main animation |             //Play main animation | ||||||
| @ -122,13 +127,13 @@ public class StateTransitionUtil { | |||||||
|                 if(parent == Globals.playerEntity && !Globals.controlHandler.cameraIsThirdPerson() && animation != null){ |                 if(parent == Globals.playerEntity && !Globals.controlHandler.cameraIsThirdPerson() && animation != null){ | ||||||
|                     //first person |                     //first person | ||||||
|                     //play first person audio |                     //play first person audio | ||||||
|                     if(state.audioData != null && state.audioData.getAudioPath() != null){ |                     if(audioData != null && audioData.getAudioPath() != null){ | ||||||
|                         Globals.virtualAudioSourceManager.createVirtualAudioSource(state.audioData.getAudioPath(), VirtualAudioSourceType.CREATURE, false); |                         Globals.virtualAudioSourceManager.createVirtualAudioSource(audioData.getAudioPath(), VirtualAudioSourceType.CREATURE, false); | ||||||
|                     } |                     } | ||||||
|                 } else { |                 } else { | ||||||
|                     //play third person audio |                     //play third person audio | ||||||
|                     if(state.audioData != null && state.audioData.getAudioPath() != null){ |                     if(audioData != null && audioData.getAudioPath() != null){ | ||||||
|                         Globals.virtualAudioSourceManager.createVirtualAudioSource(state.audioData.getAudioPath(), VirtualAudioSourceType.CREATURE, false, EntityUtils.getPosition(parent)); |                         Globals.virtualAudioSourceManager.createVirtualAudioSource(audioData.getAudioPath(), VirtualAudioSourceType.CREATURE, false, EntityUtils.getPosition(parent)); | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
| @ -289,6 +294,9 @@ public class StateTransitionUtil { | |||||||
|         //The audio data |         //The audio data | ||||||
|         TreeDataAudio audioData; |         TreeDataAudio audioData; | ||||||
| 
 | 
 | ||||||
|  |         //Gets the audio to play | ||||||
|  |         Supplier<TreeDataAudio> getAudio; | ||||||
|  | 
 | ||||||
|         //The function to fire on completion (ie to transition to the next state) |         //The function to fire on completion (ie to transition to the next state) | ||||||
|         Runnable onComplete; |         Runnable onComplete; | ||||||
| 
 | 
 | ||||||
| @ -331,12 +339,12 @@ public class StateTransitionUtil { | |||||||
|         private StateTransitionUtilItem( |         private StateTransitionUtilItem( | ||||||
|             Object stateEnum, |             Object stateEnum, | ||||||
|             Supplier<TreeDataAnimation> getAnimation, |             Supplier<TreeDataAnimation> getAnimation, | ||||||
|             TreeDataAudio audioData, |             Supplier<TreeDataAudio> getAudio, | ||||||
|             Runnable onComplete |             Runnable onComplete | ||||||
|         ){ |         ){ | ||||||
|             this.stateEnum = stateEnum; |             this.stateEnum = stateEnum; | ||||||
|             this.getAnimation = getAnimation; |             this.getAnimation = getAnimation; | ||||||
|             this.audioData = audioData; |             this.getAudio = getAudio; | ||||||
|             this.onComplete = onComplete; |             this.onComplete = onComplete; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -346,19 +354,19 @@ public class StateTransitionUtil { | |||||||
|          * The intended usecase is if the animation could change based on some state in the tree. |          * The intended usecase is if the animation could change based on some state in the tree. | ||||||
|          * @param stateEnum The enum value for this state |          * @param stateEnum The enum value for this state | ||||||
|          * @param getAnimationData The supplier for the animation data. If it is null, it will not play any animation |          * @param getAnimationData The supplier for the animation data. If it is null, it will not play any animation | ||||||
|          * @param audioData The path to an audio file to play on starting the animation. If null, no audio will be played |          * @param getAudio The supplier for path to an audio file to play on starting the animation. If null, no audio will be played | ||||||
|          * @param onComplete !!Must transition to the next state!! Fires when the animation completes. If not supplied, animations and autio will loop |          * @param onComplete !!Must transition to the next state!! Fires when the animation completes. If not supplied, animations and autio will loop | ||||||
|          */ |          */ | ||||||
|         public static StateTransitionUtilItem create( |         public static StateTransitionUtilItem create( | ||||||
|             Object stateEnum, |             Object stateEnum, | ||||||
|             Supplier<TreeDataAnimation> getAnimation, |             Supplier<TreeDataAnimation> getAnimation, | ||||||
|             TreeDataAudio audioData, |             Supplier<TreeDataAudio> getAudio, | ||||||
|             Runnable onComplete |             Runnable onComplete | ||||||
|             ){ |             ){ | ||||||
|             return new StateTransitionUtilItem( |             return new StateTransitionUtilItem( | ||||||
|                 stateEnum, |                 stateEnum, | ||||||
|                 getAnimation, |                 getAnimation, | ||||||
|                 audioData, |                 getAudio, | ||||||
|                 onComplete |                 onComplete | ||||||
|             ); |             ); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -56,19 +56,19 @@ public class ClientBlockTree implements BehaviorTree { | |||||||
|             StateTransitionUtilItem.create( |             StateTransitionUtilItem.create( | ||||||
|                 BlockState.WIND_UP, |                 BlockState.WIND_UP, | ||||||
|                 () -> {return this.blockSystem.getBlockVariant(this.currentBlockVariant).getWindUpAnimation();}, |                 () -> {return this.blockSystem.getBlockVariant(this.currentBlockVariant).getWindUpAnimation();}, | ||||||
|                 null, |                 () -> {return this.blockSystem.getBlockVariant(this.currentBlockVariant).getWindUpAudio();}, | ||||||
|                 null |                 null | ||||||
|             ), |             ), | ||||||
|             StateTransitionUtilItem.create( |             StateTransitionUtilItem.create( | ||||||
|                 BlockState.BLOCKING, |                 BlockState.BLOCKING, | ||||||
|                 () -> {return this.blockSystem.getBlockVariant(this.currentBlockVariant).getMainAnimation();}, |                 () -> {return this.blockSystem.getBlockVariant(this.currentBlockVariant).getMainAnimation();}, | ||||||
|                 null, |                 () -> {return this.blockSystem.getBlockVariant(this.currentBlockVariant).getMainAudio();}, | ||||||
|                 null |                 null | ||||||
|             ), |             ), | ||||||
|             StateTransitionUtilItem.create( |             StateTransitionUtilItem.create( | ||||||
|                 BlockState.COOLDOWN, |                 BlockState.COOLDOWN, | ||||||
|                 () -> {return this.blockSystem.getBlockVariant(this.currentBlockVariant).getCooldownAnimation();}, |                 () -> {return this.blockSystem.getBlockVariant(this.currentBlockVariant).getCooldownAnimation();}, | ||||||
|                 null, |                 () -> {return this.blockSystem.getBlockVariant(this.currentBlockVariant).getCooldownAudio();}, | ||||||
|                 null |                 null | ||||||
|             ), |             ), | ||||||
|         }); |         }); | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ package electrosphere.game.data.creature.type.block; | |||||||
| import java.util.List; | import java.util.List; | ||||||
| 
 | 
 | ||||||
| import electrosphere.game.data.common.TreeDataAnimation; | import electrosphere.game.data.common.TreeDataAnimation; | ||||||
|  | import electrosphere.game.data.common.TreeDataAudio; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * A variant of data that can be loaded into the block system. Variants are for different types of equip states. |  * A variant of data that can be loaded into the block system. Variants are for different types of equip states. | ||||||
| @ -17,12 +18,21 @@ public class BlockVariant { | |||||||
|     //the animation to play when winding up |     //the animation to play when winding up | ||||||
|     TreeDataAnimation windUpAnimation; |     TreeDataAnimation windUpAnimation; | ||||||
| 
 | 
 | ||||||
|  |     //the audio to play when winding up | ||||||
|  |     TreeDataAudio windUpAudio; | ||||||
|  | 
 | ||||||
|     //the main animation to play while blocking |     //the main animation to play while blocking | ||||||
|     TreeDataAnimation mainAnimation; |     TreeDataAnimation mainAnimation; | ||||||
| 
 | 
 | ||||||
|  |     //the main audio to play while blocking | ||||||
|  |     TreeDataAudio mainAudio; | ||||||
|  | 
 | ||||||
|     //the animation to play when cooling down |     //the animation to play when cooling down | ||||||
|     TreeDataAnimation cooldownAnimation; |     TreeDataAnimation cooldownAnimation; | ||||||
| 
 | 
 | ||||||
|  |     //the audio to play while cooling down | ||||||
|  |     TreeDataAudio cooldownAudio; | ||||||
|  | 
 | ||||||
|     //the list of default equipment cases that this variant should be used for |     //the list of default equipment cases that this variant should be used for | ||||||
|     List<VariantDefaults> defaults; |     List<VariantDefaults> defaults; | ||||||
| 
 | 
 | ||||||
| @ -42,6 +52,14 @@ public class BlockVariant { | |||||||
|         return windUpAnimation; |         return windUpAnimation; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Gets the audio to play when winding up | ||||||
|  |      * @return The audio | ||||||
|  |      */ | ||||||
|  |     public TreeDataAudio getWindUpAudio(){ | ||||||
|  |         return windUpAudio; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * The main animation to play while blocking |      * The main animation to play while blocking | ||||||
|      * @return |      * @return | ||||||
| @ -50,6 +68,14 @@ public class BlockVariant { | |||||||
|         return mainAnimation; |         return mainAnimation; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Gets the audio to play when blocking | ||||||
|  |      * @return The audio | ||||||
|  |      */ | ||||||
|  |     public TreeDataAudio getMainAudio(){ | ||||||
|  |         return mainAudio; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * The animation to play when cooling down |      * The animation to play when cooling down | ||||||
|      * @return |      * @return | ||||||
| @ -58,6 +84,14 @@ public class BlockVariant { | |||||||
|         return cooldownAnimation; |         return cooldownAnimation; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Gets the audio to play when cooling down | ||||||
|  |      * @return The audio | ||||||
|  |      */ | ||||||
|  |     public TreeDataAudio getCooldownAudio(){ | ||||||
|  |         return cooldownAudio; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * the list of default equipment cases that this variant should be used for |      * the list of default equipment cases that this variant should be used for | ||||||
|      * @return |      * @return | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user