您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
84 行
1.7 KiB
84 行
1.7 KiB
|
|
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
|
|
namespace AxelF {
|
|
|
|
[Serializable]
|
|
public class Timing {
|
|
[FormerlySerializedAs("asset")]
|
|
public Patch patch;
|
|
|
|
[MinMax(0, 600)]
|
|
public MinMaxFloat delay;
|
|
|
|
[Serializable]
|
|
public struct RandomizationParams {
|
|
[Range(0, 1)]
|
|
public float chance;
|
|
}
|
|
|
|
[Colorize(order = 0)]
|
|
public RandomizationParams randomization = new RandomizationParams {
|
|
chance = 1f
|
|
};
|
|
|
|
public float GetDelay() {
|
|
return delay.GetRandomValue();
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public class AudioSequence {
|
|
[Space(10)]
|
|
[Colorize]
|
|
public Timing[] timing;
|
|
|
|
[Space(10)]
|
|
[MinMax(0, 600, colorize = true)]
|
|
public MinMaxFloat duration;
|
|
|
|
[Serializable]
|
|
public struct RepeatParams {
|
|
[Range(0, 99)]
|
|
public int count;
|
|
public bool forever;
|
|
}
|
|
|
|
[Colorize]
|
|
public RepeatParams repeat = new RepeatParams {
|
|
forever = true
|
|
};
|
|
|
|
[NonSerialized]
|
|
public uint lastHandle;
|
|
|
|
[NonSerialized]
|
|
public Patch patch;
|
|
|
|
internal float GetMaxDuration() {
|
|
return duration.max * (1 + repeat.count);
|
|
}
|
|
|
|
public float GetDuration() {
|
|
return duration.GetRandomValue();
|
|
}
|
|
|
|
public bool GetCueInfo(out float duration, out int repeats) {
|
|
duration = GetDuration();
|
|
repeats = repeat.forever ? -1 : repeat.count;
|
|
return duration > Mathf.Epsilon;
|
|
}
|
|
|
|
public bool Activate(ActivationParams ap) {
|
|
if (lastHandle != ap.handle || !Application.isPlaying) {
|
|
lastHandle = ap.handle;
|
|
return Synthesizer.Activate(this, ap);
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
} // AxelF
|
|
|