|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
|
|
|
|
|
using Duality;
|
|
|
|
|
using Duality.Editor;
|
|
|
|
|
using Duality.Components;
|
|
|
|
|
using Duality.Audio;
|
|
|
|
|
using Duality.Resources;
|
|
|
|
|
|
|
|
|
|
namespace AudioHandling
|
|
|
|
|
{
|
|
|
|
|
public class Audio2DPlayer : Component, ICmpUpdatable
|
|
|
|
|
{
|
|
|
|
|
private ContentRef<Sound> sound = null;
|
|
|
|
|
private float volume = 1.0f;
|
|
|
|
|
private float pitch = 1.0f;
|
|
|
|
|
private float lowpass = 1.0f;
|
|
|
|
|
private float panning = 0.0f;
|
|
|
|
|
|
|
|
|
|
[DontSerialize] private SoundInstance instance = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public ContentRef<Sound> Sound
|
|
|
|
|
{
|
|
|
|
|
get { return this.sound; }
|
|
|
|
|
set { this.sound = value; }
|
|
|
|
|
}
|
|
|
|
|
[EditorHintRange(0.0f, 2.0f)]
|
|
|
|
|
public float Volume
|
|
|
|
|
{
|
|
|
|
|
get { return this.volume; }
|
|
|
|
|
set { this.volume = value; }
|
|
|
|
|
}
|
|
|
|
|
[EditorHintRange(0.5f, 2.0f)]
|
|
|
|
|
public float Pitch
|
|
|
|
|
{
|
|
|
|
|
get { return this.pitch; }
|
|
|
|
|
set { this.pitch = value; }
|
|
|
|
|
}
|
|
|
|
|
[EditorHintRange(0.0f, 1.0f)]
|
|
|
|
|
public float Lowpass
|
|
|
|
|
{
|
|
|
|
|
get { return this.lowpass; }
|
|
|
|
|
set { this.lowpass = value; }
|
|
|
|
|
}
|
|
|
|
|
[EditorHintRange(-1.0f, 1.0f)]
|
|
|
|
|
public float Panning
|
|
|
|
|
{
|
|
|
|
|
get { return this.panning; }
|
|
|
|
|
set { this.panning = value; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ICmpUpdatable.OnUpdate()
|
|
|
|
|
{
|
|
|
|
|
if (this.instance == null || this.instance.Disposed)
|
|
|
|
|
{
|
|
|
|
|
this.instance = DualityApp.Sound.PlaySound(this.sound);
|
|
|
|
|
this.instance.Looped = true;
|
|
|
|
|
}
|
|
|
|
|
this.instance.Volume = this.volume;
|
|
|
|
|
this.instance.Lowpass = this.lowpass;
|
|
|
|
|
this.instance.Pitch = this.pitch;
|
|
|
|
|
this.instance.Panning = this.panning;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|