mirror of
https://github.com/hanzoai/ProjectTinySamples.git
synced 2026-09-24 00:01:34 +00:00
47 lines
1.8 KiB
C#
47 lines
1.8 KiB
C#
using Unity.Entities;
|
|
using Unity.Tiny.Audio;
|
|
|
|
namespace TinyKitchen
|
|
{
|
|
/// <summary>
|
|
/// Play dynamic audio according to the game state and player actions
|
|
/// </summary>
|
|
public class PlayAudio : SystemBase
|
|
{
|
|
protected override void OnUpdate()
|
|
{
|
|
// Get access to the game states
|
|
var game = GetSingleton<Game>();
|
|
|
|
// Get access to dynamic audio
|
|
var audioManager = GetSingleton<AudioManager>();
|
|
var audioFlyingFoodEntity = audioManager.FlyingFoodAudio;
|
|
var flyingFoodAudioSource = EntityManager.GetComponentData<AudioSource>(audioFlyingFoodEntity);
|
|
var audioBouncingFoodEntity = audioManager.BouncingFoodAudio;
|
|
var bouncingFoodAudioSource = EntityManager.GetComponentData<AudioSource>(audioBouncingFoodEntity);
|
|
|
|
if (game.gameState == GameState.Flying)
|
|
{
|
|
// Play flying audio
|
|
if (!flyingFoodAudioSource.isPlaying)
|
|
EntityManager.AddComponent<AudioSourceStart>(audioFlyingFoodEntity);
|
|
}
|
|
else
|
|
{
|
|
// Stop flying audio
|
|
if (flyingFoodAudioSource.isPlaying)
|
|
EntityManager.AddComponent<AudioSourceStop>(audioFlyingFoodEntity);
|
|
}
|
|
|
|
// Play rebound audio
|
|
Entities.ForEach((Entity entity, ref FoodInstanceComponent foodInstanceComponent) =>
|
|
{
|
|
if (foodInstanceComponent.playBouncingAudio && !foodInstanceComponent.hasPlayedBouncingAudio)
|
|
{
|
|
foodInstanceComponent.hasPlayedBouncingAudio = true;
|
|
EntityManager.AddComponent<AudioSourceStart>(audioBouncingFoodEntity);
|
|
}
|
|
}).WithStructuralChanges().Run();
|
|
}
|
|
}
|
|
} |