You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.5 KiB
C#

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;
}
}
}