OldBlueWater/BlueWater/Assets/RayFire/Scripts/Editor/RayfireSoundEditor.cs
2023-08-22 14:31:24 +09:00

821 lines
31 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEditorInternal;
using UnityEngine.Audio;
namespace RayFire
{
[CanEditMultipleObjects]
[CustomEditor (typeof(RayfireSound))]
public class RayfireSoundEditor : Editor
{
RayfireSound sound;
SerializedProperty сlipsInitProp;
ReorderableList clipsInitList;
SerializedProperty сlipsActProp;
ReorderableList clipsActList;
SerializedProperty сlipsDmlProp;
ReorderableList clipsDmlList;
SerializedProperty сlipsColProp;
ReorderableList clipsColList;
/// /////////////////////////////////////////////////////////
/// Static
/// /////////////////////////////////////////////////////////
static int space = 3;
static GUIContent gui_volBase = new GUIContent ("Base Volume", "Base volume. Can be increased by Size Volume property.");
static GUIContent gui_colSize = new GUIContent ("Size Volume", "Additional volume per one unit size.");
static GUIContent gui_eventsInit = new GUIContent ("Initialization", "Enable Initialization sound.");
static GUIContent gui_eventsAct = new GUIContent ("Activation", "Enable Activation sound");
static GUIContent gui_eventsDml = new GUIContent ("Demolition", "Enable Demolition sound");
static GUIContent gui_eventsCol = new GUIContent ("Collision", "Enable Collision sound");
static GUIContent gui_once = new GUIContent ("Play Once", "");
static GUIContent gui_soundMult = new GUIContent ("Multiplier", "Sound volume multiplier for this event.");
static GUIContent gui_soundVel = new GUIContent ("Relative Velocity", "Minimum Relative Velocity collision threshold to play collision sound.");
static GUIContent gui_clip = new GUIContent ("AudioClip", "The AudioClip AAsset played by the AudioSource");
static GUIContent gui_group = new GUIContent ("Output", "");
static GUIContent gui_prior = new GUIContent ("Priority", "Sets the priority of the source. Note that a sound with a larger priority value will more likely be stolen by sounds with smaller priority values.");
static GUIContent gui_spat = new GUIContent ("Spatial Blend", "0 = 2D, 1 = 3D");
static GUIContent gui_mind = new GUIContent ("Min Distance", "Within Min Distance, te volume will stay at the loudest possible. Outside of this Min Distance it begins to attenuate.");
static GUIContent gui_maxd = new GUIContent ("Max Distance", "Max Distance is the distance a sound stops attenuating at.");
static GUIContent gui_filterSize = new GUIContent ("Minimum Size", "Objects with size lower than defined value will not make sound.");
static GUIContent gui_filterDist = new GUIContent ("Camera Distance", "Objects with distance to main camera higher than defined value will not make sound.");
/// /////////////////////////////////////////////////////////
/// Enable
/// /////////////////////////////////////////////////////////
private void OnEnable()
{
сlipsInitProp = serializedObject.FindProperty("initialization.clips");
clipsInitList = new ReorderableList(serializedObject, сlipsInitProp, true, true, true, true);
clipsInitList.drawElementCallback = DrawInitListItems;
clipsInitList.drawHeaderCallback = DrawInitHeader;
clipsInitList.onAddCallback = AddInit;
clipsInitList.onRemoveCallback = RemoveInit;
сlipsActProp = serializedObject.FindProperty("activation.clips");
clipsActList = new ReorderableList(serializedObject, сlipsActProp, true, true, true, true);
clipsActList.drawElementCallback = DrawActListItems;
clipsActList.drawHeaderCallback = DrawActHeader;
clipsActList.onAddCallback = AddAct;
clipsActList.onRemoveCallback = RemoveAct;
сlipsDmlProp = serializedObject.FindProperty("demolition.clips");
clipsDmlList = new ReorderableList(serializedObject, сlipsDmlProp, true, true, true, true);
clipsDmlList.drawElementCallback = DrawDmlListItems;
clipsDmlList.drawHeaderCallback = DrawDmlHeader;
clipsDmlList.onAddCallback = AddDml;
clipsDmlList.onRemoveCallback = RemoveDml;
сlipsColProp = serializedObject.FindProperty("collision.clips");
clipsColList = new ReorderableList(serializedObject, сlipsColProp, true, true, true, true);
clipsColList.drawElementCallback = DrawColListItems;
clipsColList.drawHeaderCallback = DrawColHeader;
clipsColList.onAddCallback = AddCol;
clipsColList.onRemoveCallback = RemoveCol;
}
/// /////////////////////////////////////////////////////////
/// Inspector
/// /////////////////////////////////////////////////////////
public override void OnInspectorGUI()
{
sound = target as RayfireSound;
if (sound == null)
return;
GUILayout.Space (8);
UI_Vol();
GUILayout.Space (space);
UI_Events();
GUILayout.Space (space);
UI_Filters();
GUILayout.Space (8);
if (Application.isPlaying == true)
{
GUILayout.Label ("Info", EditorStyles.boldLabel);
GUILayout.Space (space);
GUILayout.Label (" Volume: " + RFSound.GeVolume(sound, 0f));
GUILayout.Space (5);
}
}
/// /////////////////////////////////////////////////////////
/// Volume
/// /////////////////////////////////////////////////////////
void UI_Vol()
{
GUILayout.Space (space);
GUILayout.Label (" Volume", EditorStyles.boldLabel);
GUILayout.Space (space);
UI_VolBase();
UI_VolSize();
}
void UI_VolBase()
{
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.baseVolume = EditorGUILayout.Slider (gui_volBase, sound.baseVolume, 0.01f, 1f);
if (EditorGUI.EndChangeCheck() == true)
foreach (RayfireSound scr in targets)
{
scr.baseVolume = sound.baseVolume;
SetDirty (scr);
}
//EditorGUILayout.MinMaxSlider (gui_volBase, ref sound.baseVolume, ref sound.sizeVolume, 0f, 1f);
//EditorGUILayout.BeginFadeGroup ()
}
void UI_VolSize()
{
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.sizeVolume = EditorGUILayout.Slider (gui_colSize, sound.sizeVolume, 0f, 1f);
if (EditorGUI.EndChangeCheck() == true)
foreach (RayfireSound scr in targets)
{
scr.sizeVolume = sound.sizeVolume;
SetDirty (scr);
}
}
/// /////////////////////////////////////////////////////////
/// Events
/// /////////////////////////////////////////////////////////
void UI_Events()
{
GUILayout.Space (space);
GUILayout.Label (" Events", EditorStyles.boldLabel);
GUILayout.Space (space);
UI_EventsInit();
UI_EventsAct();
UI_EventsDml();
UI_EventsCol();
}
void UI_EventsInit()
{
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.initialization.enable = EditorGUILayout.Toggle (gui_eventsInit, sound.initialization.enable);
if (EditorGUI.EndChangeCheck())
{
foreach (RayfireSound scr in targets)
{
scr.initialization.enable = sound.initialization.enable;
SetDirty (scr);
}
}
if (sound.initialization.enable == true)
UI_PropsInit();
}
void UI_EventsAct()
{
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.activation.enable = EditorGUILayout.Toggle (gui_eventsAct, sound.activation.enable);
if (EditorGUI.EndChangeCheck())
foreach (RayfireSound scr in targets)
{
scr.activation.enable = sound.activation.enable;
SetDirty (scr);
}
if (sound.activation.enable == true)
UI_PropsAct();
}
void UI_EventsDml()
{
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.demolition.enable = EditorGUILayout.Toggle (gui_eventsDml, sound.demolition.enable);
if (EditorGUI.EndChangeCheck())
foreach (RayfireSound scr in targets)
{
scr.demolition.enable = sound.demolition.enable;
SetDirty (scr);
}
if (sound.demolition.enable == true)
UI_PropsDml();
}
void UI_EventsCol()
{
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.collision.enable = EditorGUILayout.Toggle (gui_eventsCol, sound.collision.enable);
if (EditorGUI.EndChangeCheck())
foreach (RayfireSound scr in targets)
{
scr.collision.enable = sound.collision.enable;
SetDirty (scr);
}
if (sound.collision.enable == true)
UI_PropsCol();
}
/// /////////////////////////////////////////////////////////
/// Properties
/// /////////////////////////////////////////////////////////
void UI_PropsInit()
{
if (Application.isPlaying == true)
{
GUILayout.Space (space);
if (GUILayout.Button ("Initialization Sound", GUILayout.Height (25)))
foreach (var targ in targets)
if (targ as RayfireSound != null)
{
RFSound.InitializationSound (targ as RayfireSound, 0f);
(targ as RayfireSound).initialization.played = false;
}
}
GUILayout.Space (space);
EditorGUI.indentLevel++;
EditorGUI.BeginChangeCheck();
sound.initialization.once = EditorGUILayout.Toggle (gui_once, sound.initialization.once);
if (EditorGUI.EndChangeCheck())
{
foreach (RayfireSound scr in targets)
{
scr.initialization.once = sound.initialization.once;
SetDirty (scr);
}
}
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.initialization.multiplier = EditorGUILayout.Slider (gui_soundMult, sound.initialization.multiplier, 0.01f, 1f);
if (EditorGUI.EndChangeCheck() == true)
{
foreach (RayfireSound scr in targets)
{
scr.initialization.multiplier = sound.initialization.multiplier;
SetDirty (scr);
}
}
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.initialization.clip = (AudioClip)EditorGUILayout.ObjectField (gui_clip, sound.initialization.clip, typeof(AudioClip), true);
if (EditorGUI.EndChangeCheck() == true)
{
foreach (RayfireSound scr in targets)
{
scr.initialization.clip = sound.initialization.clip;
SetDirty (scr);
}
}
if (sound.initialization.clip == null)
{
GUILayout.Space (space);
serializedObject.Update();
clipsInitList.DoLayoutList();
serializedObject.ApplyModifiedProperties();
}
GUILayout.Space (space);
UI_Properties (sound.initialization, 0);
EditorGUI.indentLevel--;
}
void UI_PropsAct()
{
// Initialize
if (Application.isPlaying == true)
{
GUILayout.Space (space);
if (GUILayout.Button ("Activation Sound", GUILayout.Height (25)))
foreach (var targ in targets)
if (targ as RayfireSound != null)
{
RFSound.ActivationSound (targ as RayfireSound, 0f);
(targ as RayfireSound).activation.played = false;
}
}
GUILayout.Space (space);
EditorGUI.indentLevel++;
EditorGUI.BeginChangeCheck();
sound.activation.once = EditorGUILayout.Toggle (gui_once, sound.activation.once);
if (EditorGUI.EndChangeCheck())
{
foreach (RayfireSound scr in targets)
{
scr.activation.once = sound.activation.once;
SetDirty (scr);
}
}
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.activation.multiplier = EditorGUILayout.Slider (gui_soundMult, sound.activation.multiplier, 0.01f, 1f);
if (EditorGUI.EndChangeCheck() == true)
{
foreach (RayfireSound scr in targets)
{
scr.activation.multiplier = sound.activation.multiplier;
SetDirty (scr);
}
}
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.activation.clip = (AudioClip)EditorGUILayout.ObjectField (gui_clip, sound.activation.clip, typeof(AudioClip), true);
if (EditorGUI.EndChangeCheck() == true)
{
foreach (RayfireSound scr in targets)
{
scr.activation.clip = sound.activation.clip;
SetDirty (scr);
}
}
if (sound.activation.clip == null)
{
GUILayout.Space (space);
serializedObject.Update();
clipsActList.DoLayoutList();
serializedObject.ApplyModifiedProperties();
}
GUILayout.Space (space);
UI_Properties (sound.activation, 1);
EditorGUI.indentLevel--;
}
void UI_PropsDml()
{
// Initialize
if (Application.isPlaying == true)
{
GUILayout.Space (space);
if (GUILayout.Button ("Demolition Sound", GUILayout.Height (25)))
foreach (var targ in targets)
if (targ as RayfireSound != null)
{
RFSound.DemolitionSound (targ as RayfireSound, 0f);
(targ as RayfireSound).demolition.played = false;
}
}
GUILayout.Space (space);
EditorGUI.indentLevel++;
EditorGUI.BeginChangeCheck();
sound.demolition.once = EditorGUILayout.Toggle (gui_once, sound.demolition.once);
if (EditorGUI.EndChangeCheck())
{
foreach (RayfireSound scr in targets)
{
scr.demolition.once = sound.demolition.once;
SetDirty (scr);
}
}
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.demolition.multiplier = EditorGUILayout.Slider (gui_soundMult, sound.demolition.multiplier, 0.01f, 1f);
if (EditorGUI.EndChangeCheck() == true)
{
foreach (RayfireSound scr in targets)
{
scr.demolition.multiplier = sound.demolition.multiplier;
SetDirty (scr);
}
}
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.demolition.clip = (AudioClip)EditorGUILayout.ObjectField (gui_clip, sound.demolition.clip, typeof(AudioClip), true);
if (EditorGUI.EndChangeCheck() == true)
{
foreach (RayfireSound scr in targets)
{
scr.demolition.clip = sound.demolition.clip;
SetDirty (scr);
}
}
if (sound.demolition.clip == null)
{
GUILayout.Space (space);
serializedObject.Update();
clipsDmlList.DoLayoutList();
serializedObject.ApplyModifiedProperties();
}
GUILayout.Space (space);
UI_Properties (sound.demolition, 2);
EditorGUI.indentLevel--;
}
void UI_PropsCol()
{
if (Application.isPlaying == true)
{
GUILayout.Space (space);
if (GUILayout.Button ("Collision Sound", GUILayout.Height (25)))
foreach (var targ in targets)
if (targ as RayfireSound != null)
{
RFSound.CollisionSound (targ as RayfireSound, 0f);
(targ as RayfireSound).collision.played = false;
}
}
GUILayout.Space (space);
EditorGUI.indentLevel++;
GUILayout.Space (space);
GUILayout.Label (" Collision", EditorStyles.boldLabel);
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.relativeVelocity = EditorGUILayout.Slider (gui_soundVel, sound.relativeVelocity, 0.1f, 100f);
if (EditorGUI.EndChangeCheck() == true)
foreach (RayfireSound scr in targets)
{
scr.relativeVelocity = sound.relativeVelocity;
SetDirty (scr);
}
GUILayout.Space (space);
GUILayout.Label (" Last Collision Relative Velocity: " + sound.lastCollision.ToString());
GUILayout.Space (space);
GUILayout.Space (space);
GUILayout.Label (" Sound", EditorStyles.boldLabel);
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.collision.once = EditorGUILayout.Toggle (gui_once, sound.collision.once);
if (EditorGUI.EndChangeCheck())
foreach (RayfireSound scr in targets)
{
scr.collision.once = sound.collision.once;
SetDirty (scr);
}
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.collision.multiplier = EditorGUILayout.Slider (gui_soundMult, sound.collision.multiplier, 0.01f, 1f);
if (EditorGUI.EndChangeCheck() == true)
foreach (RayfireSound scr in targets)
{
scr.collision.multiplier = sound.collision.multiplier;
SetDirty (scr);
}
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.collision.clip = (AudioClip)EditorGUILayout.ObjectField (gui_clip, sound.collision.clip, typeof(AudioClip), true);
if (EditorGUI.EndChangeCheck() == true)
foreach (RayfireSound scr in targets)
{
scr.collision.clip = sound.collision.clip;
SetDirty (scr);
}
if (sound.collision.clip == null)
{
GUILayout.Space (space);
serializedObject.Update();
clipsColList.DoLayoutList();
serializedObject.ApplyModifiedProperties();
}
GUILayout.Space (space);
UI_Properties (sound.collision, 3);
EditorGUI.indentLevel--;
}
/// /////////////////////////////////////////////////////////
/// Properties
/// /////////////////////////////////////////////////////////
void UI_Properties(RFSound snd, int ind)
{
EditorGUI.BeginChangeCheck();
snd.outputGroup = (AudioMixerGroup)EditorGUILayout.ObjectField (gui_group, snd.outputGroup, typeof(AudioMixerGroup), true);
if (EditorGUI.EndChangeCheck() == true)
{
foreach (RayfireSound scr in targets)
{
if (ind == 0) scr.initialization.outputGroup = snd.outputGroup;
else if (ind == 1) scr.activation.outputGroup = snd.outputGroup;
else if (ind == 2) scr.demolition.outputGroup = snd.outputGroup;
else if (ind == 3) scr.collision.outputGroup = snd.outputGroup;
SetDirty (scr);
}
}
GUILayout.Space (space);
if (snd.outputGroup == null)
return;
EditorGUI.indentLevel++;
EditorGUI.BeginChangeCheck();
snd.priority = EditorGUILayout.IntSlider (gui_prior, snd.priority, 0, 256);
if (EditorGUI.EndChangeCheck() == true)
foreach (RayfireSound scr in targets)
{
if (ind == 0) scr.initialization.priority = snd.priority;
else if (ind == 1) scr.activation.priority = snd.priority;
else if (ind == 2) scr.demolition.priority = snd.priority;
else if (ind == 3) scr.collision.priority = snd.priority;
SetDirty (scr);
}
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
snd.spatial = EditorGUILayout.Slider (gui_spat, snd.spatial, 0, 1);
if (EditorGUI.EndChangeCheck() == true)
foreach (RayfireSound scr in targets)
{
if (ind == 0) scr.initialization.spatial = snd.spatial;
else if (ind == 1) scr.activation.spatial = snd.spatial;
else if (ind == 2) scr.demolition.spatial = snd.spatial;
else if (ind == 3) scr.collision.spatial = snd.spatial;
SetDirty (scr);
}
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
snd.minDist = EditorGUILayout.FloatField (gui_mind, snd.minDist);
if (EditorGUI.EndChangeCheck() == true)
foreach (RayfireSound scr in targets)
{
if (ind == 0) scr.initialization.minDist = snd.minDist;
else if (ind == 1) scr.activation.minDist = snd.minDist;
else if (ind == 2) scr.demolition.minDist = snd.minDist;
else if (ind == 3) scr.collision.minDist = snd.minDist;
SetDirty (scr);
}
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
snd.maxDist = EditorGUILayout.FloatField (gui_maxd, snd.maxDist);
if (EditorGUI.EndChangeCheck() == true)
foreach (RayfireSound scr in targets)
{
if (ind == 0) scr.initialization.maxDist = snd.maxDist;
else if (ind == 1) scr.activation.maxDist = snd.maxDist;
else if (ind == 2) scr.demolition.maxDist = snd.maxDist;
else if (ind == 3) scr.collision.maxDist = snd.maxDist;
SetDirty (scr);
}
GUILayout.Space (space);
EditorGUI.indentLevel--;
}
/// /////////////////////////////////////////////////////////
/// Filters
/// /////////////////////////////////////////////////////////
void UI_Filters()
{
GUILayout.Space (space);
GUILayout.Label (" Filters", EditorStyles.boldLabel);
GUILayout.Space (space);
EditorGUI.BeginChangeCheck();
sound.minimumSize = EditorGUILayout.Slider (gui_filterSize, sound.minimumSize, 0f, 1f);
GUILayout.Space (space);
sound.cameraDistance = EditorGUILayout.Slider (gui_filterDist, sound.cameraDistance, 0f, 999f);
if (EditorGUI.EndChangeCheck() == true)
foreach (RayfireSound scr in targets)
{
scr.minimumSize = sound.minimumSize;
scr.cameraDistance = sound.cameraDistance;
SetDirty (scr);
}
}
/// /////////////////////////////////////////////////////////
/// ReorderableList draw
/// /////////////////////////////////////////////////////////
void DrawInitListItems(Rect rect, int index, bool isActive, bool isFocused)
{
SerializedProperty element = clipsInitList.serializedProperty.GetArrayElementAtIndex(index);
EditorGUI.PropertyField(new Rect(rect.x, rect.y+2, EditorGUIUtility.currentViewWidth - 80f, EditorGUIUtility.singleLineHeight), element, GUIContent.none);
}
void DrawInitHeader(Rect rect)
{
rect.x += 10;
EditorGUI.LabelField(rect, "Random Clips");
}
void AddInit(ReorderableList list)
{
if (sound.initialization.clips == null)
sound.initialization.clips = new List<AudioClip>();
sound.initialization.clips.Add (null);
list.index = list.count;
}
void RemoveInit(ReorderableList list)
{
if (sound.initialization.clips != null)
{
sound.initialization.clips.RemoveAt (list.index);
list.index = list.index - 1;
}
}
/// /////////////////////////////////////////////////////////
/// ReorderableList draw
/// /////////////////////////////////////////////////////////
void DrawActListItems(Rect rect, int index, bool isActive, bool isFocused)
{
SerializedProperty element = clipsActList.serializedProperty.GetArrayElementAtIndex(index);
EditorGUI.PropertyField(new Rect(rect.x, rect.y+2, EditorGUIUtility.currentViewWidth - 80f, EditorGUIUtility.singleLineHeight), element, GUIContent.none);
}
void DrawActHeader(Rect rect)
{
rect.x += 10;
EditorGUI.LabelField(rect, "Random Clips");
}
void AddAct(ReorderableList list)
{
if (sound.activation.clips == null)
sound.activation.clips = new List<AudioClip>();
sound.activation.clips.Add (null);
list.index = list.count;
}
void RemoveAct(ReorderableList list)
{
if (sound.activation.clips != null)
{
sound.activation.clips.RemoveAt (list.index);
list.index = list.index - 1;
}
}
/// /////////////////////////////////////////////////////////
/// ReorderableList draw
/// /////////////////////////////////////////////////////////
void DrawDmlListItems(Rect rect, int index, bool isActive, bool isFocused)
{
SerializedProperty element = clipsDmlList.serializedProperty.GetArrayElementAtIndex(index);
EditorGUI.PropertyField(new Rect(rect.x, rect.y+2, EditorGUIUtility.currentViewWidth - 80f, EditorGUIUtility.singleLineHeight), element, GUIContent.none);
}
void DrawDmlHeader(Rect rect)
{
rect.x += 10;
EditorGUI.LabelField(rect, "Random Clips");
}
void AddDml(ReorderableList list)
{
if (sound.demolition.clips == null)
sound.demolition.clips = new List<AudioClip>();
sound.demolition.clips.Add (null);
list.index = list.count;
}
void RemoveDml(ReorderableList list)
{
if (sound.demolition.clips != null)
{
sound.demolition.clips.RemoveAt (list.index);
list.index = list.index - 1;
}
}
/// /////////////////////////////////////////////////////////
/// ReorderableList draw
/// /////////////////////////////////////////////////////////
void DrawColListItems(Rect rect, int index, bool isActive, bool isFocused)
{
SerializedProperty element = clipsColList.serializedProperty.GetArrayElementAtIndex(index);
EditorGUI.PropertyField(new Rect(rect.x, rect.y+2, EditorGUIUtility.currentViewWidth - 80f, EditorGUIUtility.singleLineHeight), element, GUIContent.none);
}
void DrawColHeader(Rect rect)
{
rect.x += 10;
EditorGUI.LabelField(rect, "Random Clips");
}
void AddCol(ReorderableList list)
{
if (sound.collision.clips == null)
sound.collision.clips = new List<AudioClip>();
sound.collision.clips.Add (null);
list.index = list.count;
}
void RemoveCol(ReorderableList list)
{
if (sound.collision.clips != null)
{
sound.collision.clips.RemoveAt (list.index);
list.index = list.index - 1;
}
}
/// /////////////////////////////////////////////////////////
/// Common
/// /////////////////////////////////////////////////////////
void SetDirty (RayfireSound scr)
{
if (Application.isPlaying == false)
{
EditorUtility.SetDirty (scr);
EditorSceneManager.MarkSceneDirty (scr.gameObject.scene);
SceneView.RepaintAll();
}
}
}
}