fix vfx based presets
This commit is contained in:
1 parent
e033519317
commit
c69eebf6c2
27 files changed
+3595
-5665
No files matched your search
@@ -1,17 +1,20 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.VFX;
|
||||
using UnityEngine.VFX.Utility;
|
||||
using Assets.WasapiAudio.Scripts.Unity;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine.VFX.Utility;
|
||||
using UnityEngine.VFX;
|
||||
using UnityEngine;
|
||||
|
||||
[AddComponentMenu("VFX/Property Binders/Kaiju/VFX Spectrum Binder")]
|
||||
[VFXBinder("Kaiju/Kaiju - VFX Spectrum Binder")]
|
||||
public class VfxSpectrumBinder : VfxAudioVisualizationEffect {
|
||||
[VFXPropertyBinding("System.UInt32"), SerializeField]
|
||||
protected ExposedProperty SpectrumSizeParameter = "SpectrumSize";
|
||||
public class VfxSpectrumBinder : VFXBinderBase {
|
||||
[SerializeReference]
|
||||
[SerializeReferenceButton]
|
||||
public List<SpectrumTransformer> Transformers = new List<SpectrumTransformer>();
|
||||
|
||||
[VFXPropertyBinding("UnityEngine.Texture2D"), SerializeField]
|
||||
protected ExposedProperty SpectrumDataTextureParameter = "SpectrumDataTexture";
|
||||
[SpectrumDataPreview]
|
||||
public SpectrumData Preview;
|
||||
|
||||
public AudioSource source;
|
||||
public bool symmetric = false;
|
||||
|
||||
private Texture2D _texture;
|
||||
@@ -20,14 +23,14 @@ public class VfxSpectrumBinder : VfxAudioVisualizationEffect {
|
||||
private void InitialiseTexture() {
|
||||
Debug.Log("Reinitialising spectrum texture...");
|
||||
if (symmetric) {
|
||||
_texture = new Texture2D(SpectrumSize * 2, 1, TextureFormat.RFloat, false);
|
||||
_colorCache = new Color[SpectrumSize * 2];
|
||||
_texture = new Texture2D(source.SpectrumSize * 2, 1, TextureFormat.RFloat, false);
|
||||
_colorCache = new Color[source.SpectrumSize * 2];
|
||||
} else {
|
||||
_texture = new Texture2D(SpectrumSize, 1, TextureFormat.RFloat, false);
|
||||
_colorCache = new Color[SpectrumSize];
|
||||
_texture = new Texture2D(source.SpectrumSize, 1, TextureFormat.RFloat, false);
|
||||
_colorCache = new Color[source.SpectrumSize];
|
||||
}
|
||||
|
||||
_texture.name = $"AudioSpectrumData{SpectrumSize}";
|
||||
_texture.name = $"AudioSpectrumData{source.SpectrumSize}";
|
||||
}
|
||||
|
||||
private void UpdateTexture() {
|
||||
@@ -35,18 +38,18 @@ public class VfxSpectrumBinder : VfxAudioVisualizationEffect {
|
||||
if (_texture == null) InitialiseTexture();
|
||||
|
||||
// has symmetric been toggled and the texture needs updating?
|
||||
if (symmetric && _texture.width != SpectrumSize * 2) InitialiseTexture();
|
||||
if (!symmetric && _texture.width != SpectrumSize) InitialiseTexture();
|
||||
if (symmetric && _texture.width != source.SpectrumSize * 2) InitialiseTexture();
|
||||
if (!symmetric && _texture.width != source.SpectrumSize) InitialiseTexture();
|
||||
|
||||
var spectrumData = GetSpectrumData();
|
||||
|
||||
if (symmetric) {
|
||||
for (int i = 0; i < SpectrumSize; i++) {
|
||||
_colorCache[SpectrumSize + i] = new Color(spectrumData[i], 0, 0, 0);
|
||||
_colorCache[SpectrumSize - (i + 1)] = new Color(spectrumData[i], 0, 0, 0);
|
||||
for (int i = 0; i < source.SpectrumSize; i++) {
|
||||
_colorCache[source.SpectrumSize + i] = new Color(spectrumData[i], 0, 0, 0);
|
||||
_colorCache[source.SpectrumSize - (i + 1)] = new Color(spectrumData[i], 0, 0, 0);
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < SpectrumSize; i++) {
|
||||
for (int i = 0; i < source.SpectrumSize; i++) {
|
||||
_colorCache[i] = new Color(spectrumData[i], 0, 0, 0);
|
||||
}
|
||||
}
|
||||
@@ -55,15 +58,37 @@ public class VfxSpectrumBinder : VfxAudioVisualizationEffect {
|
||||
_texture.Apply();
|
||||
}
|
||||
|
||||
public override bool IsValid(VisualEffect component) {
|
||||
return source != null;
|
||||
}
|
||||
|
||||
// public override void UpdateBinding(VisualEffect component) {
|
||||
// // source.SpectrumSize = source.source.SpectrumSize;
|
||||
// }
|
||||
|
||||
protected float[] GetSpectrumData() {
|
||||
// Get raw / unmodified spectrum data
|
||||
var spectrumData = source.GetSpectrumData();
|
||||
|
||||
// Run spectrum data through all configured transformers
|
||||
if (Transformers != null && Transformers.Count > 0) {
|
||||
foreach (var transformer in Transformers) {
|
||||
spectrumData = transformer.Transform(spectrumData);
|
||||
}
|
||||
}
|
||||
|
||||
Preview.Values = spectrumData;
|
||||
return spectrumData;
|
||||
}
|
||||
|
||||
public override void UpdateBinding(VisualEffect component) {
|
||||
base.UpdateBinding(component);
|
||||
UpdateTexture();
|
||||
if (symmetric) {
|
||||
component.SetUInt(SpectrumSizeParameter, (uint) SpectrumSize * 2);
|
||||
component.SetUInt("SpectrumSize", (uint) source.SpectrumSize * 2);
|
||||
} else {
|
||||
component.SetUInt(SpectrumSizeParameter, (uint) SpectrumSize);
|
||||
component.SetUInt("SpectrumSize", (uint) source.SpectrumSize);
|
||||
}
|
||||
component.SetTexture(SpectrumDataTextureParameter, _texture);
|
||||
component.SetTexture("SpectrumDataTexture", _texture);
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6dd81208ee44c0a4ea1f1682290e1979
|
||||
guid: d2c94a50cf5c1d2449fe8305e8a79075
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
Reference in new issue
Block a user