This commit is contained in:
2026-06-02 08:27:03 +07:00
parent 7889064469
commit a48cd962e1
4232 changed files with 2 additions and 36881 deletions

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 9d13838561dba474cb884bd76b82cec6
folderAsset: yes
timeCreated: 1460038122
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,185 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &106114
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 428982}
- component: {fileID: 8206458}
- component: {fileID: 11444172}
m_Layer: 0
m_Name: AudioSource
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &428982
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 106114}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!82 &8206458
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 106114}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_PlayOnAwake: 0
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 0
DopplerLevel: 0
MinDistance: 0.1
MaxDistance: 20
Pan2D: 0
rolloffMode: 2
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0.05
value: 1
inSlope: -20.007967
outSlope: -20.007967
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.1
value: 0.5
inSlope: -5.0019917
outSlope: -5.0019917
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.2
value: 0.25
inSlope: -1.2504979
outSlope: -1.2504979
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.4
value: 0.125
inSlope: -0.31262448
outSlope: -0.31262448
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.80598146
value: 0.022888184
inSlope: -0.07815612
outSlope: -0.07815612
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0.0015991218
inSlope: -0.05001994
outSlope: -0.05001994
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 0
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 0
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 0
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 0
--- !u!114 &11444172
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 106114}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd39039863a63e48ad1e9260ed01bc8, type: 3}
m_Name:
m_EditorClassIdentifier:
openCloseEvents: 0
openCloseWindow: 0
selectedToolbar: 0
delay: 3
onDestroy:
m_PersistentCalls:
m_Calls: []

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: dfea19d1d34dd174d87195f78cb44ae7
timeCreated: 1460037360
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 0f16e54550ff12642b5ff236d602146b
folderAsset: yes
timeCreated: 1458925403
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,31 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: af1c89896f5f7f6439ef1a93a23a0f3d, type: 3}
m_Name: defaultSurface
m_EditorClassIdentifier:
audioSource: {fileID: 8206458, guid: dfea19d1d34dd174d87195f78cb44ae7, type: 3}
audioMixerGroup: {fileID: 24352844, guid: a63f18b704a1b874a8dad30baf0939e6, type: 2}
TextureOrMaterialNames: []
audioClips:
- {fileID: 8300000, guid: 375af61fe5c06774084832c408e31683, type: 3}
- {fileID: 8300000, guid: 229c64ed39310624c9aada3d771c7b06, type: 3}
- {fileID: 8300000, guid: 1f866668884214b4db7140d25b0def17, type: 3}
- {fileID: 8300000, guid: e5ae416f49602c1409e7c0d85ae0215c, type: 3}
- {fileID: 8300000, guid: 169f75c2c9f5fae4c9147639256eb0c8, type: 3}
- {fileID: 8300000, guid: 169f75c2c9f5fae4c9147639256eb0c8, type: 3}
particleObject: {fileID: 135586, guid: 50016857087368141803f41af4837830, type: 3}
useStepMark: 1
stepMark: {fileID: 184202, guid: b8cf3efdf419ad74f8c0f66ab6418371, type: 3}
stepLayer:
serializedVersion: 2
m_Bits: 1
timeToDestroy: 3

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 710c74baecce50746bd56b9711c851e7
timeCreated: 1458347611
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,30 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: af1c89896f5f7f6439ef1a93a23a0f3d, type: 3}
m_Name: grassSurface
m_EditorClassIdentifier:
audioSource: {fileID: 8206458, guid: dfea19d1d34dd174d87195f78cb44ae7, type: 2}
audioMixerGroup: {fileID: 24329260, guid: a63f18b704a1b874a8dad30baf0939e6, type: 2}
TextureOrMaterialNames:
- grass
- deadgrass
audioClips:
- {fileID: 8300000, guid: 1642d501db459a2408f8b9b45ea7e09f, type: 3}
- {fileID: 8300000, guid: fe99b708869596346a35738043ba969f, type: 3}
- {fileID: 8300000, guid: 77313b3ac9c75f545a7cce94bdc8c1a3, type: 3}
- {fileID: 8300000, guid: 23f537bc838b6224a8b22680c3ec0477, type: 3}
particleObject: {fileID: 0}
useStepMark: 0
stepMark: {fileID: 0}
stepLayer:
serializedVersion: 2
m_Bits: 0
timeToDestroy: 5

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 504809ebaf6b9ad49a8167ccc5e62729
timeCreated: 1462397256
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,32 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: af1c89896f5f7f6439ef1a93a23a0f3d, type: 3}
m_Name: gravelSurface
m_EditorClassIdentifier:
audioSource: {fileID: 8206458, guid: dfea19d1d34dd174d87195f78cb44ae7, type: 2}
audioMixerGroup: {fileID: 24300002, guid: a63f18b704a1b874a8dad30baf0939e6, type: 2}
TextureOrMaterialNames:
- soilSand
- gravel
audioClips:
- {fileID: 8300000, guid: 061f92917f3344e46a181210cd2be5f8, type: 3}
- {fileID: 8300000, guid: e6b69fa3aa7d71543b631e73a8d4edaa, type: 3}
- {fileID: 8300000, guid: 36b2a5a7f988c3a49a8dcb97c82f3055, type: 3}
- {fileID: 8300000, guid: 763ef6481f64ff044b076930e3e76ba2, type: 3}
- {fileID: 8300000, guid: 5cbf4dba6e3b40040938560663d850cc, type: 3}
- {fileID: 8300000, guid: 325a507d48fda384fa119f766f5c51a7, type: 3}
particleObject: {fileID: 0}
useStepMark: 0
stepMark: {fileID: 0}
stepLayer:
serializedVersion: 2
m_Bits: 0
timeToDestroy: 5

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4829d3f3f836f18438f3704d11f0eff4
timeCreated: 1462397284
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,31 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: af1c89896f5f7f6439ef1a93a23a0f3d, type: 3}
m_Name: metalSurface
m_EditorClassIdentifier:
audioSource: {fileID: 8206458, guid: dfea19d1d34dd174d87195f78cb44ae7, type: 3}
audioMixerGroup: {fileID: 24304546, guid: a63f18b704a1b874a8dad30baf0939e6, type: 2}
TextureOrMaterialNames:
- metal
- proto_orange
audioClips:
- {fileID: 8300000, guid: aa4a5fc2bf0743348943776816aa5a68, type: 3}
- {fileID: 8300000, guid: b39d500728efec2468983e463e16d719, type: 3}
- {fileID: 8300000, guid: 819a181928a16d64993eeba8d3b8c651, type: 3}
- {fileID: 8300000, guid: b0b8cdcf5e784624990a0d61b230fd3e, type: 3}
particleObject: {fileID: 0}
useStepMark: 0
stepMark: {fileID: 0}
stepLayer:
serializedVersion: 2
m_Bits: 0
timeToDestroy: 5

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 724313117c912804b936c9df9cbb57f5
timeCreated: 1458925393
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,29 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: af1c89896f5f7f6439ef1a93a23a0f3d, type: 3}
m_Name: smokes
m_EditorClassIdentifier:
audioSource: {fileID: 8206458, guid: dfea19d1d34dd174d87195f78cb44ae7, type: 2}
audioMixerGroup: {fileID: 24352844, guid: a63f18b704a1b874a8dad30baf0939e6, type: 2}
TextureOrMaterialNames: []
audioClips:
- {fileID: 8300000, guid: 375af61fe5c06774084832c408e31683, type: 3}
- {fileID: 8300000, guid: 229c64ed39310624c9aada3d771c7b06, type: 3}
- {fileID: 8300000, guid: 1f866668884214b4db7140d25b0def17, type: 3}
- {fileID: 8300000, guid: e5ae416f49602c1409e7c0d85ae0215c, type: 3}
- {fileID: 8300000, guid: 169f75c2c9f5fae4c9147639256eb0c8, type: 3}
particleObject: {fileID: 135586, guid: 50016857087368141803f41af4837830, type: 2}
useStepMark: 0
stepMark: {fileID: 184202, guid: b8cf3efdf419ad74f8c0f66ab6418371, type: 2}
stepLayer:
serializedVersion: 2
m_Bits: 1
timeToDestroy: 3

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 299ad2a44600d814ab0e18ebb35319a3
timeCreated: 1458347611
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 61a5e9afd0f89cd40a4519621878c5ce
folderAsset: yes
timeCreated: 1433611621
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,148 @@
using UnityEngine;
using UnityEditor;
using System.Collections;
namespace Invector
{
[CustomEditor(typeof(vAudioSurface), true)]
public class AudioSurfaceEditor : UnityEditor.Editor
{
GUISkin skin;
string[] ignoreProperties = new string[] { "TextureOrMaterialNames", "audioClips" };
public override void OnInspectorGUI()
{
if (!skin) skin = Resources.Load("vSkin") as GUISkin;
GUI.skin = skin;
if (serializedObject == null) return;
GUILayout.BeginVertical("Audio Surface", "window");
GUILayout.Space(30);
DrawSingleSurface(serializedObject, true);
GUILayout.BeginVertical("box");
GUILayout.Box("Optional Parameter", GUILayout.ExpandWidth(true));
DrawPropertiesExcluding(serializedObject, ignoreProperties);
GUILayout.EndVertical();
GUILayout.EndVertical();
if (GUI.changed)
{
serializedObject.ApplyModifiedProperties();
}
}
void DrawSingleSurface(SerializedObject surface, bool showListNames)
{
if (showListNames)
DrawSimpleList(surface.FindProperty("TextureOrMaterialNames"), false);
DrawSimpleList(surface.FindProperty("audioClips"), true);
}
void DrawSimpleList(SerializedProperty list, bool useDraBox)
{
var name = list.name;
GUILayout.BeginVertical("box");
GUILayout.Box(name, GUILayout.ExpandWidth(true));
switch (list.name)
{
case "TextureOrMaterialNames":
name = "Texture or Material names";
EditorGUILayout.HelpBox("Leave this field empty and assign to the defaultSurface to play on any surface or type a Material name and assign to a customSurface to play only when the sphere hit a mesh using it.", MessageType.Info);
break;
case "audioClips":
EditorGUILayout.HelpBox("You can lock the inspector to drag and drop multiple audio files.", MessageType.Info);
name = "Audio Clips";
break;
}
GUILayout.BeginVertical();
GUILayout.BeginHorizontal();
list.isExpanded=EditorGUILayout.Foldout( list.isExpanded ,list.displayName,true);
//GUILayout.Box(list.arraySize.ToString("00"));
GUILayout.EndHorizontal();
if (list.isExpanded)
{
if (useDraBox)
DrawDragBox(list);
EditorGUILayout.Separator();
GUILayout.BeginHorizontal();
if (GUILayout.Button("Add"))
{
list.arraySize++;
}
if (GUILayout.Button("Clear"))
{
list.arraySize = 0;
}
GUILayout.EndHorizontal();
EditorGUILayout.Space();
for (int i = 0; i < list.arraySize; i++)
{
GUILayout.BeginHorizontal();
if (GUILayout.Button("-"))
{
RemoveElementAtIndex(list, i);
}
if (i < list.arraySize && i >= 0)
EditorGUILayout.PropertyField(list.GetArrayElementAtIndex(i), new GUIContent("", null, ""));
GUILayout.EndHorizontal();
}
}
GUILayout.EndVertical();
GUILayout.EndVertical();
}
private void RemoveElementAtIndex(SerializedProperty array, int index)
{
if (index != array.arraySize - 1)
{
array.GetArrayElementAtIndex(index).objectReferenceValue = array.GetArrayElementAtIndex(array.arraySize - 1).objectReferenceValue;
}
array.arraySize--;
}
void DrawDragBox(SerializedProperty list)
{
//var dragAreaGroup = GUILayoutUtility.GetRect(0f, 35f, GUILayout.ExpandWidth(true));
GUI.skin.box.alignment = TextAnchor.MiddleCenter;
GUI.skin.box.normal.textColor = Color.white;
//GUILayout.BeginVertical("window");
GUILayout.Box("Drag your audio clips here!", "box", GUILayout.MinHeight(50), GUILayout.ExpandWidth(true));
var dragAreaGroup = GUILayoutUtility.GetLastRect();
//GUILayout.EndVertical();
switch (Event.current.type)
{
case EventType.DragUpdated:
case EventType.DragPerform:
if (!dragAreaGroup.Contains(Event.current.mousePosition))
break;
DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
if (Event.current.type == EventType.DragPerform)
{
DragAndDrop.AcceptDrag();
foreach (var dragged in DragAndDrop.objectReferences)
{
var clip = dragged as AudioClip;
if (clip == null)
continue;
list.arraySize++;
list.GetArrayElementAtIndex(list.arraySize - 1).objectReferenceValue = clip;
}
}
serializedObject.ApplyModifiedProperties();
Event.current.Use();
break;
}
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: a1b76be3d9e75a346aca5055c6a32b05
timeCreated: 1498588527
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,342 @@
using UnityEngine;
using UnityEditor;
namespace Invector
{
[CanEditMultipleObjects]
[CustomEditor(typeof(vFootStep), true)]
public class vFootStepEditor : UnityEditor.Editor
{
GUISkin skin;
bool openWindow;
private Texture2D m_Logo = null;
void OnEnable()
{
m_Logo = (Texture2D)Resources.Load("footStepIcon", typeof(Texture2D));
CheckColliders();
}
public override void OnInspectorGUI()
{
if (!skin) skin = Resources.Load("vSkin") as GUISkin;
GUI.skin = skin;
if (serializedObject == null) return;
GUILayout.BeginVertical("FOOTSTEP", "window");
GUILayout.Label(m_Logo, GUILayout.MaxHeight(25));
openWindow = GUILayout.Toggle(openWindow, openWindow ? "Close" : "Open", EditorStyles.toolbarButton);
if (openWindow)
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Script"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("animationType"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("_volume"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("_spawnParticle"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("_spawnStepMark"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("_useTriggerEnter"));
serializedObject.FindProperty("debugTextureName").boolValue = EditorGUILayout.Toggle("Debug Texture Name", serializedObject.FindProperty("debugTextureName").boolValue);
if (serializedObject.FindProperty("animationType").enumValueIndex == (int)AnimationType.Humanoid)
{
GUILayout.BeginHorizontal("box");
if (CheckColliders())
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("leftFootTrigger"), new GUIContent("", null, "leftFootTrigger"));
EditorGUILayout.Separator();
EditorGUILayout.PropertyField(serializedObject.FindProperty("rightFootTrigger"), new GUIContent("", null, "rightFootTrigger"));
}
else
{
EditorGUILayout.HelpBox("Can't Create FootStepTriggers", MessageType.Warning);
CheckColliders();
}
GUILayout.EndHorizontal();
}
else
{
DrawFootStepList();
}
GUILayout.BeginVertical("box");
EditorGUILayout.PropertyField(serializedObject.FindProperty("defaultSurface"));
EditorGUILayout.HelpBox("This audio will play on any terrain or texture as the primary footstep.", MessageType.Info);
GUILayout.EndVertical();
GUILayout.BeginVertical("box");
DrawMultipleSurface(serializedObject.FindProperty("customSurfaces"));
EditorGUILayout.HelpBox("Create new CustomSurfaces on the 3rd Person Controller menu > Resources > New AudioSurface", MessageType.Info);
GUILayout.EndVertical();
}
GUILayout.EndVertical();
if (GUI.changed)
{
serializedObject.ApplyModifiedProperties();
}
}
bool CheckColliders()
{
if (AssetDatabase.Contains(target))
return true;
var transform = (serializedObject.targetObject as vFootStep).transform;
if (transform == null) return false;
var animator = transform.GetComponent<Animator>();
if (animator == null) return false;
var leftFoot = animator.GetBoneTransform(HumanBodyBones.LeftFoot);
vFootStepTrigger leftFoot_trigger = null;
if (leftFoot != null)
leftFoot_trigger = leftFoot.GetComponentInChildren<vFootStepTrigger>();
if (leftFoot_trigger == null && leftFoot != null)
{
var lFoot = new GameObject("leftFoot_trigger");
lFoot.tag = "Ignore Ragdoll";
var collider = lFoot.AddComponent<SphereCollider>();
collider.radius = 0.1f;
leftFoot_trigger = lFoot.AddComponent<vFootStepTrigger>();
leftFoot_trigger.transform.position = new Vector3(leftFoot.position.x, transform.position.y, leftFoot.position.z);
leftFoot_trigger.transform.rotation = transform.rotation;
leftFoot_trigger.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast");
leftFoot_trigger.transform.parent = leftFoot;
serializedObject.FindProperty("leftFootTrigger").objectReferenceValue = leftFoot_trigger;
serializedObject.ApplyModifiedProperties();
}
serializedObject.FindProperty("leftFootTrigger").objectReferenceValue = leftFoot_trigger;
if (leftFoot_trigger != null && leftFoot_trigger.GetComponent<Collider>() == null)
{
var collider = leftFoot_trigger.gameObject.AddComponent<SphereCollider>();
collider.radius = 0.1f;
}
var rightFoot = animator.GetBoneTransform(HumanBodyBones.RightFoot);
vFootStepTrigger rightFoot_trigger = null;
if (rightFoot != null)
rightFoot_trigger = rightFoot.GetComponentInChildren<vFootStepTrigger>();
if (rightFoot_trigger == null && rightFoot != null)
{
var rFoot = new GameObject("rightFoot_trigger");
rFoot.tag = "Ignore Ragdoll";
var collider = rFoot.AddComponent<SphereCollider>();
collider.radius = 0.1f;
rightFoot_trigger = rFoot.gameObject.AddComponent<vFootStepTrigger>();
rightFoot_trigger.transform.position = new Vector3(rightFoot.position.x, transform.position.y, rightFoot.position.z);
rightFoot_trigger.transform.rotation = transform.rotation;
rightFoot_trigger.gameObject.layer = LayerMask.NameToLayer("Ignore Raycast");
rightFoot_trigger.transform.parent = rightFoot;
serializedObject.FindProperty("rightFootTrigger").objectReferenceValue = rightFoot_trigger;
serializedObject.ApplyModifiedProperties();
}
serializedObject.FindProperty("rightFootTrigger").objectReferenceValue = rightFoot_trigger;
if (rightFoot_trigger != null && rightFoot_trigger.GetComponent<Collider>() == null)
{
var collider = rightFoot_trigger.gameObject.AddComponent<SphereCollider>();
collider.radius = 0.1f;
}
if (serializedObject.FindProperty("rightFootTrigger").objectReferenceValue != null && serializedObject.FindProperty("leftFootTrigger").objectReferenceValue != null) return true;
return false;
}
void DrawFootStepList()
{
var footStepList = serializedObject.FindProperty("footStepTriggers");
if (footStepList != null)
{
GUILayout.BeginVertical("TRIGGERS", "window");
GUILayout.Space(30);
GUILayout.BeginHorizontal();
if (GUILayout.Button("New", EditorStyles.miniButton))
{
footStepList.arraySize++;
var go = new GameObject("Trigger-" + footStepList.arraySize.ToString("00"), typeof(vFootStepTrigger), typeof(SphereCollider));
go.GetComponent<SphereCollider>().radius = 0.05f;
go.transform.position = (target as vFootStep).transform.position;
go.layer = LayerMask.NameToLayer("Ignore Raycast");
go.transform.parent = (target as vFootStep).transform;
footStepList.GetArrayElementAtIndex(footStepList.arraySize - 1).objectReferenceValue = go.GetComponent<vFootStepTrigger>();
}
GUILayout.EndHorizontal();
GUILayout.BeginVertical();
for (int i = 0; i < footStepList.arraySize; i++)
{
if (!DrawFootStepElement(footStepList, footStepList.GetArrayElementAtIndex(i), i)) break;
}
GUILayout.EndVertical();
GUILayout.EndVertical();
}
}
bool DrawFootStepElement(SerializedProperty list, SerializedProperty footStepElement, int index)
{
GUILayout.BeginHorizontal("box");
EditorGUILayout.PropertyField(footStepElement, new GUIContent(""));
if (GUILayout.Button("-", EditorStyles.miniButtonMid, GUILayout.MaxWidth(15)))
{
if ((footStepElement.objectReferenceValue as vFootStepTrigger) != null)
{
DestroyImmediate((footStepElement.objectReferenceValue as vFootStepTrigger).gameObject);
list.DeleteArrayElementAtIndex(index);
}
list.DeleteArrayElementAtIndex(index);
GUILayout.EndHorizontal();
return false;
}
GUILayout.EndHorizontal();
return true;
}
void DrawSingleSurface(SerializedProperty surface, bool showListNames)
{
//GUILayout.BeginVertical("window");
EditorGUILayout.PropertyField(surface.FindPropertyRelative("source"), false);
EditorGUILayout.PropertyField(surface.FindPropertyRelative("name"), new GUIContent("Surface Name"), false);
if (showListNames)
DrawSimpleList(surface.FindPropertyRelative("TextureOrMaterialNames"), false);
DrawSimpleList(surface.FindPropertyRelative("audioClips"), true);
//GUILayout.EndVertical();
}
void DrawMultipleSurface(SerializedProperty surfaceList)
{
//GUILayout.BeginVertical();
EditorGUILayout.PropertyField(surfaceList, new GUIContent("Custom Surfaces"));
if (surfaceList.isExpanded)
{
GUILayout.BeginHorizontal();
if (GUILayout.Button("Add"))
{
surfaceList.arraySize++;
}
if (GUILayout.Button("Clear"))
{
surfaceList.arraySize = 0;
}
GUILayout.EndHorizontal();
EditorGUILayout.Space();
for (int i = 0; i < surfaceList.arraySize; i++)
{
GUILayout.BeginHorizontal();
GUILayout.BeginHorizontal("box");
EditorGUILayout.Space();
if (i < surfaceList.arraySize && i >= 0)
{
GUILayout.BeginVertical();
EditorGUILayout.PropertyField(surfaceList.GetArrayElementAtIndex(i),
new GUIContent(surfaceList.GetArrayElementAtIndex(i).objectReferenceValue != null ? surfaceList.GetArrayElementAtIndex(i).objectReferenceValue.name : "Surface " + (i + 1).ToString("00")));
EditorGUILayout.Space();
GUILayout.EndVertical();
}
GUILayout.EndHorizontal();
if (GUILayout.Button("-"))
{
surfaceList.DeleteArrayElementAtIndex(i);
}
GUILayout.EndHorizontal();
}
//GUILayout.EndVertical();
}
}
void DrawTextureNames(SerializedProperty textureNames)
{
for (int i = 0; i < textureNames.arraySize; i++)
EditorGUILayout.PropertyField(textureNames.GetArrayElementAtIndex(i), true);
}
void DrawSimpleList(SerializedProperty list, bool useDraBox)
{
EditorGUILayout.PropertyField(list);
if (list.isExpanded)
{
if (useDraBox)
DrawDragBox(list);
GUILayout.BeginHorizontal();
if (GUILayout.Button("Add"))
{
list.arraySize++;
}
if (GUILayout.Button("Clear"))
{
list.arraySize = 0;
}
GUILayout.EndHorizontal();
EditorGUILayout.Space();
for (int i = 0; i < list.arraySize; i++)
{
GUILayout.BeginHorizontal();
if (GUILayout.Button("-"))
{
RemoveElementAtIndex(list, i);
}
if (i < list.arraySize && i >= 0)
EditorGUILayout.PropertyField(list.GetArrayElementAtIndex(i), new GUIContent("", null, ""));
GUILayout.EndHorizontal();
}
}
}
private void RemoveElementAtIndex(SerializedProperty array, int index)
{
if (index != array.arraySize - 1)
{
array.GetArrayElementAtIndex(index).objectReferenceValue = array.GetArrayElementAtIndex(array.arraySize - 1).objectReferenceValue;
}
array.arraySize--;
}
void DrawDragBox(SerializedProperty list)
{
//var dragAreaGroup = GUILayoutUtility.GetRect(0f, 35f, GUILayout.ExpandWidth(true));
GUI.skin.box.alignment = TextAnchor.MiddleCenter;
GUI.skin.box.normal.textColor = Color.white;
GUILayout.Box("Drag your audio clips here!", "box", GUILayout.MinHeight(50), GUILayout.ExpandWidth(true));
var dragAreaGroup = GUILayoutUtility.GetLastRect();
switch (Event.current.type)
{
case EventType.DragUpdated:
case EventType.DragPerform:
if (!dragAreaGroup.Contains(Event.current.mousePosition))
break;
DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
if (Event.current.type == EventType.DragPerform)
{
DragAndDrop.AcceptDrag();
foreach (var dragged in DragAndDrop.objectReferences)
{
var clip = dragged as AudioClip;
if (clip == null)
continue;
list.arraySize++;
list.GetArrayElementAtIndex(list.arraySize - 1).objectReferenceValue = clip;
}
}
serializedObject.ApplyModifiedProperties();
Event.current.Use();
break;
}
}
public override bool UseDefaultMargins()
{
return false;
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 3b24bb8aeafbfb1498256cb11ce9178b
timeCreated: 1433611647
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 8eab2a65fc3f9254ca6c35df9def2180
folderAsset: yes
timeCreated: 1458357275
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,151 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ParticleSmokeVertlit 1
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHAPREMULTIPLY_ON
- _EMISSION
- _SURFACE_TYPE_TRANSPARENT
m_InvalidKeywords:
- _ALPHABLEND_ON
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses:
- MOTIONVECTORS
- DepthOnly
- SHADOWCASTER
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 2800000, guid: 5b303ff28ad9368468a2edd759cf458d, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 5b303ff28ad9368468a2edd759cf458d, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BumpScale: 1
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DstBlend: 10
- _DstBlendAlpha: 10
- _EnvironmentReflections: 1
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _InvFade: 3
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 1
- _UVSec: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 0
m_Colors:
- _BaseColor: {r: 0.94868153, g: 1, b: 0.8308824, a: 0.397}
- _Color: {r: 0.94868153, g: 1, b: 0.8308824, a: 0.397}
- _EmisColor: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
- _TintColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!1002 &2100001
EditorExtensionImpl:
serializedVersion: 6
--- !u!114 &5691743533798480587
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10

View File

@@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 0ad7827431027c4479728decb7885fdd
NativeFormatImporter:
userData:
assetBundleName:

View File

@@ -0,0 +1,82 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: ParticleSmokeVertlit 2
m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: _ALPHABLEND_ON _EMISSION
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 5b303ff28ad9368468a2edd759cf458d, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 10
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _InvFade: 3
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 5
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 0.94868153, g: 1, b: 0.8308824, a: 0.397}
- _EmisColor: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _TintColor: {r: 1, g: 1, b: 1, a: 1}
--- !u!1002 &2100001
EditorExtensionImpl:
serializedVersion: 6

View File

@@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 082a5b83024b35042a596590c1dc503d
NativeFormatImporter:
userData:
assetBundleName:

View File

@@ -0,0 +1,143 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ParticleSmokeVertlit 3
m_Shader: {fileID: 4800000, guid: 0406db5a14f94604a8c57ccfbc9f3b46, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _COLOROVERLAY_ON
- _SURFACE_TYPE_TRANSPARENT
m_InvalidKeywords:
- EFFECT_BUMP
- _ALPHABLEND_ON
- _FLIPBOOKBLENDING_OFF
- _REQUIRE_UV2
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap:
RenderType: Opaque
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 948e532aaea37f0418a1fd3b2df6a32b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendOp: 0
- _BumpScale: 1
- _CameraFadingEnabled: 1
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ColorMode: 3
- _Cull: 2
- _Cutoff: 0.181
- _DetailNormalMapScale: 1
- _DistortionBlend: 0.5
- _DistortionEnabled: 1
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0.1
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EmissionEnabled: 1
- _FlipbookBlending: 1
- _FlipbookMode: 1
- _GlossMapScale: 1
- _Glossiness: 0
- _GlossyReflections: 1
- _InvFade: 3
- _LightingEnabled: 0
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _SmoothnessTextureChannel: 0
- _SoftParticlesEnabled: 1
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _CameraFadeParams: {r: 1, g: 1, b: 0, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorAddSubDiff: {r: 1, g: 0, b: 0, a: 0}
- _EmisColor: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0.31132078, g: 0.31132078, b: 0.31132078, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
- _TintColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!1002 &2100001
EditorExtensionImpl:
serializedVersion: 6
--- !u!114 &3523330726307459980
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10

View File

@@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 08f4e21d3305d5d408b2b58e710aad1f
NativeFormatImporter:
userData:
assetBundleName:

View File

@@ -0,0 +1,33 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: ParticleSmokeVertlit
m_Shader: {fileID: 10720, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 5
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: 5b303ff28ad9368468a2edd759cf458d, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 0.83
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmisColor: {r: 0.2, g: 0.2, b: 0.2, a: 0}
- _TintColor: {r: 0.3897059, g: 0.3897059, b: 0.3897059, a: 0.459}
--- !u!1002 &2100001
EditorExtensionImpl:
serializedVersion: 6

View File

@@ -0,0 +1,5 @@
fileFormatVersion: 2
guid: 225843b6084e75440a6ea970a17c93aa
NativeFormatImporter:
userData:
assetBundleName:

View File

@@ -0,0 +1,34 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: SandSmoke
m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords: ETC1_EXTERNAL_ALPHA
m_LightmapFlags: 5
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 2800000, guid: 5b303ff28ad9368468a2edd759cf458d, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _InvFade: 0.79
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmisColor: {r: 1, g: 0.8416291, b: 0.5588235, a: 1}
- _TintColor: {r: 0.9705882, g: 0.7831643, b: 0, a: 0.75686276}
--- !u!1002 &2100001
EditorExtensionImpl:
serializedVersion: 6

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c35265b3fc6d0344aa5f8668269689a6
timeCreated: 1458582690
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,151 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: step
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHAPREMULTIPLY_ON
- _DETAIL_MULX2
- _EMISSION
- _NORMALMAP
- _SURFACE_TYPE_TRANSPARENT
m_InvalidKeywords:
- _ALPHABLEND_ON
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses:
- MOTIONVECTORS
- DepthOnly
- SHADOWCASTER
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 2800000, guid: 1529461d937a8274a99c03ccc8fbc6a2, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 2800000, guid: e24bbbeb25aaffe43ad3fc7b06fa5170, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 2800000, guid: c3c0c59f9953f8e4f928646fbafc1c83, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 1529461d937a8274a99c03ccc8fbc6a2, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BumpScale: 2
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _Cull: 2
- _Cutoff: 0.585
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1.35
- _DstBlend: 10
- _DstBlendAlpha: 10
- _EnvironmentReflections: 1
- _GlossMapScale: 1
- _Glossiness: 0.15
- _GlossyReflections: 1
- _InvFade: 3
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Shininess: 0.198
- _Smoothness: 0.15
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 1
- _UVSec: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 0
m_Colors:
- _BaseColor: {r: 0.11029408, g: 0.11029408, b: 0.11029408, a: 1}
- _Color: {r: 0.11029405, g: 0.11029405, b: 0.11029405, a: 1}
- _EmisColor: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.5, g: 0.5, b: 0.5, a: 0}
- _TintColor: {r: 0.022058845, g: 0.01119162, b: 0.01119162, a: 0.5}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &2978524767448818264
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bbe9a3f845cc73b498188d55a1c6abed
timeCreated: 1458358713
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,149 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: stepSand
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHAPREMULTIPLY_ON
- _EMISSION
- _NORMALMAP
- _SURFACE_TYPE_TRANSPARENT
m_InvalidKeywords:
- _ALPHABLEND_ON
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses:
- MOTIONVECTORS
- DepthOnly
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 2800000, guid: 1529461d937a8274a99c03ccc8fbc6a2, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 2800000, guid: e24bbbeb25aaffe43ad3fc7b06fa5170, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BumpScale: 2
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _Cull: 2
- _Cutoff: 0.585
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1.35
- _DstBlend: 10
- _DstBlendAlpha: 10
- _EnvironmentReflections: 1
- _GlossMapScale: 1
- _Glossiness: 0.25
- _GlossyReflections: 1
- _InvFade: 3
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Shininess: 0.198
- _Smoothness: 0.25
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 1
- _UVSec: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 0
m_Colors:
- _BaseColor: {r: 0.24999997, g: 0.20833328, b: 0.13970584, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmisColor: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.5, g: 0.5, b: 0.5, a: 0}
- _TintColor: {r: 0.022058845, g: 0.01119162, b: 0.01119162, a: 0.5}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &1183222637386585014
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b6b6fe42fca74e84f86c69891ca6a989
timeCreated: 1458583174
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 78d93c7aaca15654c95e2fbafd26a6c6
folderAsset: yes
timeCreated: 1458357355
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,110 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &120084
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 408476}
- component: {fileID: 3357720}
- component: {fileID: 2390346}
m_Layer: 0
m_Name: Quad
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &408476
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 120084}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: -0, y: 0.01, z: 0.0638}
m_LocalScale: {x: 0.33418888, y: 0.29415956, z: 0.4046609}
m_Children: []
m_Father: {fileID: 423458}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!33 &3357720
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 120084}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &2390346
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 120084}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: bbe9a3f845cc73b498188d55a1c6abed, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!1 &184202
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 423458}
m_Layer: 0
m_Name: SimpleStepMark
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &423458
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 184202}
m_LocalRotation: {x: 0, y: -1, z: 0, w: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 408476}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: -180, z: 0}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b8cf3efdf419ad74f8c0f66ab6418371
timeCreated: 1458359504
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 50016857087368141803f41af4837830
timeCreated: 1458357056
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 3b3d07f3a868ac14ea9996e806e00930
folderAsset: yes
timeCreated: 1498587225
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,120 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
namespace Invector
{
public class vAudioSurface : ScriptableObject
{
public AudioSource audioSource;
public AudioMixerGroup audioMixerGroup; // The AudioSource that will play the clips.
public List<string> TextureOrMaterialNames; // The tag on the surfaces that play these sounds.
public List<AudioClip> audioClips; // The different clips that can be played on this surface.
public GameObject particleObject;
private vFisherYatesRandom randomSource = new vFisherYatesRandom(); // For randomly reordering clips.
public bool useStepMark;
[vHideInInspector("useStepMark")]
public GameObject stepMark;
[vHideInInspector("useStepMark")]
public LayerMask stepLayer;
[vHideInInspector("useStepMark")]
public float timeToDestroy = 5f;
public vAudioSurface()
{
audioClips = new List<AudioClip>();
TextureOrMaterialNames = new List<string>();
}
/// <summary>
/// Spawn surface effect
/// </summary>
/// <param name="footStepObject">step object surface info</param>
/// <param name="playSound">Spawn sound effect</param>
/// <param name="spawnParticle">Spawn particle effect</param>
/// <param name="spawnStepMark">Spawn step Mark effect</param>
public virtual void SpawnSurfaceEffect(FootStepObject footStepObject)
{
// initialize variable if not already started
if (randomSource == null)
{
randomSource = new vFisherYatesRandom();
}
///Create audio Effect
if (footStepObject.spawnSoundEffect)
{
PlaySound(footStepObject);
}
///Create particle Effect
if (footStepObject.spawnParticleEffect && particleObject && footStepObject.ground && stepLayer.ContainsLayer(footStepObject.ground.gameObject.layer))
{
SpawnParticle(footStepObject);
}
///Create Step Mark Effect
if (footStepObject.spawnStepMarkEffect && useStepMark)
{
StepMark(footStepObject);
}
}
/// <summary>
/// Spawn Sound effect
/// </summary>
/// <param name="footStepObject">Step object surface info</param>
protected virtual void PlaySound(FootStepObject footStepObject)
{
// if there are no clips to play return.
if (audioClips == null || audioClips.Count == 0)
{
return;
}
AudioSource source = null;
if (audioSource != null)
{
source = Instantiate(audioSource, footStepObject.sender.position, Quaternion.identity);
source.transform.SetParent(vObjectContainer.root, true);
}
if (audioSource)
{
if (audioMixerGroup != null)
{
source.outputAudioMixerGroup = audioMixerGroup;
}
}
int index = randomSource.Next(audioClips.Count);
source.PlayOneShot(audioClips[index], footStepObject.volume);
}
/// <summary>
/// Spawn Particle effect
/// </summary>
/// <param name="footStepObject">Step object surface info</param>
protected virtual void SpawnParticle(FootStepObject footStepObject)
{
var obj = Instantiate(particleObject, footStepObject.sender.position, footStepObject.sender.rotation);
obj.transform.SetParent(vObjectContainer.root, true);
}
/// <summary>
/// Spawn Step Mark effect
/// </summary>
/// <param name="footStepObject">Step object surface info</param>
protected virtual void StepMark(FootStepObject footStep)
{
RaycastHit hit;
if (Physics.Raycast(footStep.sender.transform.position + new Vector3(0, 0.25f, 0), Vector3.down, out hit, 1f, stepLayer))
{
if (stepMark)
{
var angle = Quaternion.FromToRotation(footStep.sender.up, hit.normal);
var step = Instantiate(stepMark, hit.point, angle * footStep.sender.rotation);
step.transform.SetParent(vObjectContainer.root, true);
Destroy(step, timeToDestroy);
}
}
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: af1c89896f5f7f6439ef1a93a23a0f3d
timeCreated: 1458347752
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: c98dd48f519049f42a092e26c1049b5b, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,38 @@
using UnityEngine;
using UnityEngine.Audio;
namespace Invector
{
[RequireComponent(typeof(AudioSource))]
public class vAudioSurfaceControl : MonoBehaviour
{
AudioSource source;
bool isWorking;
/// <summary>
/// Play One Shot in Audio Source Component
/// </summary>
/// <param name="clip"></param>
public void PlayOneShot(AudioClip clip, float volume)
{
if (!source) source = GetComponent<AudioSource>();
source.volume = volume;
source.PlayOneShot(clip, volume);
isWorking = true;
}
void Update()
{
if (isWorking && !source.isPlaying)
{
Destroy(gameObject);
}
}
public AudioMixerGroup outputAudioMixerGroup
{
set
{
if (!source) source = GetComponent<AudioSource>();
source.outputAudioMixerGroup = value;
}
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 669210f9e4e67104ca935da3d7059cbe
timeCreated: 1458351075
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,89 @@
using UnityEngine;
namespace Invector
{
// Fisher-Yates shuffle -- makes sure all items are selected with equal probability and that the same item is not selected twice in a row.
public class vFisherYatesRandom
{
private int[] randomIndices = null;
private int randomIndex = 0;
private int prevValue = -1;
public int Next(int len)
{
if (len <= 1)
return 0;
if (randomIndices == null || randomIndices.Length != len)
{
randomIndices = new int[len];
for (int i = 0; i < randomIndices.Length; i++)
randomIndices[i] = i;
}
if (randomIndex == 0)
{
int count = 0;
do
{
for (int i = 0; i < len - 1; i++)
{
int j = Random.Range(i, len);
if (j != i)
{
int tmp = randomIndices[i];
randomIndices[i] = randomIndices[j];
randomIndices[j] = tmp;
}
}
} while (prevValue == randomIndices[0] && ++count < 10); // Make sure the new first element is different from the last one we played
}
int value = randomIndices[randomIndex];
if (++randomIndex >= randomIndices.Length)
randomIndex = 0;
prevValue = value;
return value;
}
public int Range(int min, int max)
{
var len = (max - min) + 1;
if (len <= 1)
return max;
if (randomIndices == null || randomIndices.Length != len)
{
randomIndices = new int[len];
for (int i = 0; i < randomIndices.Length; i++)
randomIndices[i] = min + i;
}
if (randomIndex == 0)
{
int count = 0;
do
{
for (int i = 0; i < len - 1; i++)
{
int j = Random.Range(i, len);
if (j != i)
{
int tmp = randomIndices[i];
randomIndices[i] = randomIndices[j];
randomIndices[j] = tmp;
}
}
} while (prevValue == randomIndices[0] && ++count < 10); // Make sure the new first element is different from the last one we played
}
int value = randomIndices[randomIndex];
if (++randomIndex >= randomIndices.Length)
randomIndex = 0;
prevValue = value;
return value;
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: a158be35be5a63d4f838b1ac8b794ee1
timeCreated: 1424098475
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,79 @@
using UnityEngine;
using System.Collections.Generic;
namespace Invector
{
[System.Serializable]
public abstract class vFootStepBase : MonoBehaviour
{
// The different surfaces and their sounds.
public vAudioSurface defaultSurface;
public List<vAudioSurface> customSurfaces;
/// <summary>
/// Play a foot step effect passing the <seealso cref="FootStepObject"/> to determine what surface is stepping
/// </summary>
/// <param name="footStepObject">Foot Step object with surface information</param>
/// <param name="spawnParticle">Spawn Particle ?</param>
/// <param name="spawnStepMark">Spwan Step Mark ?</param>
/// <param name="volume">Audio effect volume</param>
public virtual void SpawnSurfaceEffect(FootStepObject footStepObject)
{
if (footStepObject != null)
for (int i = 0; i < customSurfaces.Count; i++)
if (customSurfaces[i] != null && ContainsTexture(footStepObject.name, customSurfaces[i]))
{
customSurfaces[i].SpawnSurfaceEffect(footStepObject);
return;
}
if (defaultSurface != null)
{
defaultSurface.SpawnSurfaceEffect(footStepObject);
}
}
/// <summary>
/// Ccheck if AudioSurface Contains texture in TextureName List
/// </summary>
/// <param name="name"></param>
/// <param name="surface"></param>
/// <returns></returns>
protected virtual bool ContainsTexture(string name, vAudioSurface surface)
{
for (int i = 0; i < surface.TextureOrMaterialNames.Count; i++)
if (name.Contains(surface.TextureOrMaterialNames[i]))
return true;
return false;
}
/// <summary>
/// Step on Terrain
/// </summary>
/// <param name="footStepObject"></param>
public abstract void StepOnTerrain(FootStepObject footStepObject);
/// <summary>
/// Step on Mesh
/// </summary>
/// <param name="footStepObject"></param>
public abstract void StepOnMesh(FootStepObject footStepObject);
/// <summary>
/// Play foot Step sound
/// </summary>
public abstract void PlayFootStepEffect();
/// <summary>
/// Play Foot Step Effect directly using animation Event
/// </summary>
/// <param name="evt"></param>
public virtual void PlayFootStep(AnimationEvent evt) { }
/// <summary>
/// Play Left Foot Step Effect directly using animation Event
/// </summary>
/// <param name="evt"></param>
public virtual void PlayFootStepLeft(AnimationEvent evt) { }
/// <summary>
/// Play Right Foot Step Effect directly using animation Event
/// </summary>
/// <param name="evt"></param>
public virtual void PlayFootStepRight(AnimationEvent evt) { }
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 7f7e8bb50a29daf42978b386b314983c
timeCreated: 1425028583
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,298 @@
using System.Collections.Generic;
using UnityEngine;
namespace Invector
{
public class vFootStep : vFootStepBase
{
public AnimationType animationType = AnimationType.Humanoid;
public bool debugTextureName;
[SerializeField, Range(0, 1f)] protected float _volume = 1f;
[vHelpBox("Enable or disable spawn particle when foot step is triggered")]
[SerializeField] protected bool _spawnParticle = true;
[vHelpBox("Enable or disable spawn step mark when foot step is triggered")]
[SerializeField] protected bool _spawnStepMark = true;
[vHelpBox("The step effect is spawned from on trigger enter event of the Foot Step Triggers. If you need to play step sound only by external events you need to disable this variable.<b>\n*Disable this to play step sound using animation events</b>")]
[SerializeField] protected bool _useTriggerEnter = true;
public float Volume { get { return _volume; } set { _volume = value; } }
public bool SpawnParticle { get { return _spawnParticle; } set { _spawnParticle = value; } }
public bool SpawnStepMark { get { return _spawnStepMark; } set { _spawnStepMark = value; } }
protected int surfaceIndex = 0;
protected Terrain terrain;
protected TerrainCollider terrainCollider;
protected TerrainData terrainData;
protected Vector3 terrainPos;
public vFootStepTrigger leftFootTrigger;
public vFootStepTrigger rightFootTrigger;
public Transform currentStep;
public List<vFootStepTrigger> footStepTriggers;
protected FootStepObject currentFootStep;
protected virtual void Start()
{
InitFootStep();
}
public virtual void InitFootStep()
{
var colls = GetComponentsInChildren<Collider>();
if (animationType == AnimationType.Humanoid)
{
if (leftFootTrigger == null && rightFootTrigger == null)
{
Debug.Log("Missing FootStep Sphere Trigger, please unfold the FootStep Component to create the triggers.");
return;
}
else
{
leftFootTrigger.trigger.isTrigger = true;
rightFootTrigger.trigger.isTrigger = true;
Physics.IgnoreCollision(leftFootTrigger.trigger, rightFootTrigger.trigger);
for (int i = 0; i < colls.Length; i++)
{
var coll = colls[i];
if (coll.enabled && coll.gameObject != leftFootTrigger.gameObject)
{
Physics.IgnoreCollision(leftFootTrigger.trigger, coll);
}
if (coll.enabled && coll.gameObject != rightFootTrigger.gameObject)
{
Physics.IgnoreCollision(rightFootTrigger.trigger, coll);
}
}
}
}
else
{
for (int i = 0; i < colls.Length; i++)
{
var coll = colls[i];
for (int a = 0; a < footStepTriggers.Count; a++)
{
var trigger = footStepTriggers[a];
trigger.trigger.isTrigger = true;
if (coll.enabled && coll.gameObject != trigger.gameObject)
{
Physics.IgnoreCollision(trigger.trigger, coll);
}
}
}
}
}
protected virtual void UpdateTerrainInfo(Terrain newTerrain)
{
if (terrain == null || terrain != newTerrain)
{
terrain = newTerrain;
if (terrain != null)
{
terrainData = terrain.terrainData;
terrainPos = terrain.transform.position;
terrainCollider = terrain.GetComponent<TerrainCollider>();
}
}
}
protected virtual float[] GetTextureMix(FootStepObject footStepObj)
{
// returns an array containing the relative mix of textures
// on the main terrain at this world position.
// The number of values in the array will equal the number
// of textures added to the terrain.
UpdateTerrainInfo(footStepObj.terrain);
// calculate which splat map cell the worldPos falls within (ignoring y)
var worldPos = footStepObj.sender.position;
int mapX = (int)(((worldPos.x - terrainPos.x) / terrainData.size.x) * terrainData.alphamapWidth);
int mapZ = (int)(((worldPos.z - terrainPos.z) / terrainData.size.z) * terrainData.alphamapHeight);
// get the splat data for this cell as a 1x1xN 3d array (where N = number of textures)
if (!terrainCollider.bounds.Contains(worldPos))
{
return new float[0];
}
float[,,] splatmapData = terrainData.GetAlphamaps(mapX, mapZ, 1, 1);
// extract the 3D array data to a 1D array:
float[] cellMix = new float[splatmapData.GetUpperBound(2) + 1];
for (int n = 0; n < cellMix.Length; n++)
{
cellMix[n] = splatmapData[0, 0, n];
}
return cellMix;
}
protected virtual int GetMainTexture(FootStepObject footStepObj)
{
// returns the zero-based index of the most dominant texture
// on the main terrain at this world position.
float[] mix = GetTextureMix(footStepObj);
if (mix == null)
{
return -1;
}
float maxMix = 0;
int maxIndex = 0;
// loop through each mix value and find the maximum
for (int n = 0; n < mix.Length; n++)
{
if (mix[n] > maxMix)
{
maxIndex = n;
maxMix = mix[n];
}
}
return maxIndex;
}
protected virtual void OnDestroy()
{
if (leftFootTrigger != null)
{
Destroy(leftFootTrigger.gameObject);
}
if (rightFootTrigger != null)
{
Destroy(rightFootTrigger.gameObject);
}
if (footStepTriggers != null && footStepTriggers.Count > 0)
{
foreach (var comp in footStepTriggers)
{
Destroy(comp.gameObject);
}
}
}
/// <summary>
/// Step on Terrain
/// </summary>
/// <param name="footStepObject"></param>
public override void StepOnTerrain(FootStepObject footStepObject)
{
if (currentStep != null && currentStep == footStepObject.sender && _useTriggerEnter)
{
return;
}
currentStep = footStepObject.sender;
surfaceIndex = GetMainTexture(footStepObject);
if (surfaceIndex != -1)
{
#if UNITY_2018_3_OR_NEWER
var name = (terrainData != null && terrainData.terrainLayers.Length > 0) ? (terrainData.terrainLayers[surfaceIndex]).diffuseTexture.name : "";
#else
var name = (terrainData != null && terrainData.splatPrototypes.Length > 0) ? (terrainData.splatPrototypes[surfaceIndex]).texture.name : "";
#endif
footStepObject.name = name;
currentFootStep = footStepObject;
if (_useTriggerEnter)
{
PlayFootStepEffect();
if (debugTextureName)
{
Debug.Log(terrain.name + " " + name);
}
}
}
}
/// <summary>
/// Step on Mesh
/// </summary>
/// <param name="footStepObject"></param>
public override void StepOnMesh(FootStepObject footStepObject)
{
if (currentStep != null && currentStep == footStepObject.sender && _useTriggerEnter)
{
return;
}
currentStep = footStepObject.sender;
currentFootStep = footStepObject;
if (_useTriggerEnter)
{
PlayFootStepEffect();
if (debugTextureName)
{
Debug.Log(footStepObject.name);
}
}
}
/// <summary>
/// Play foot Step effect
/// </summary>
public override void PlayFootStepEffect()
{
if (currentFootStep != null)
{
currentFootStep.volume = Volume;
currentFootStep.spawnParticleEffect = SpawnParticle;
currentFootStep.spawnStepMarkEffect = SpawnStepMark;
SpawnSurfaceEffect(currentFootStep);
}
}
/// <summary>
/// Play foot step effect from animation event
/// </summary>
/// <param name="evt"></param>
public override void PlayFootStep(AnimationEvent evt)
{
if (evt.animatorClipInfo.weight > 0.5)
{
PlayFootStepEffect();
}
}
/// <summary>
/// Play left foot step effect from animation event
/// </summary>
/// <param name="evt"></param>
public override void PlayFootStepLeft(AnimationEvent evt)
{
if (evt.animatorClipInfo.weight > 0.5)
{
currentFootStep.sender = leftFootTrigger.transform;
PlayFootStepEffect();
}
}
/// <summary>
/// Play right foot step effect from animation event
/// </summary>
/// <param name="evt"></param>
public override void PlayFootStepRight(AnimationEvent evt)
{
if (evt.animatorClipInfo.weight > 0.15)
{
currentFootStep.sender = rightFootTrigger.transform;
PlayFootStepEffect();
}
}
}
public enum AnimationType
{
Humanoid, Generic
}
}

View File

@@ -0,0 +1,16 @@
fileFormatVersion: 2
guid: 19ce6a4d1f67f494f8e871355031f21c
timeCreated: 1500492219
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences:
- defaultSurface: {fileID: 11400000, guid: 710c74baecce50746bd56b9711c851e7, type: 2}
- leftFootTrigger: {instanceID: 0}
- rightFootTrigger: {instanceID: 0}
- currentStep: {instanceID: 0}
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,24 @@
using UnityEngine;
namespace Invector
{
public class vFootStepHandler : MonoBehaviour
{
[Tooltip("Use this to select a specific material or texture if your mesh has multiple materials, the footstep will play only the selected index.")]
[SerializeField]
private int materialIndex = 0;
public int material_ID
{
get
{
return materialIndex;
}
}
public StepHandleType stepHandleType;
public enum StepHandleType
{
materialName,
textureName
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 153bfba017503c74d919ab3c55d40277
timeCreated: 1445535775
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,141 @@
using UnityEngine;
using UnityEngine.Events;
namespace Invector
{
public class vFootStepTrigger : MonoBehaviour
{
protected Collider _trigger;
protected vFootStepBase _fT;
public UnityEvent OnStep;
void OnDrawGizmos()
{
if (!trigger) return;
Color color = Color.green;
color.a = 0.5f;
Gizmos.color = color;
if (trigger is SphereCollider)
{
Gizmos.DrawSphere((trigger.bounds.center), (trigger as SphereCollider).radius);
}
}
void Start()
{
_fT = GetComponentInParent<vFootStepBase>();
var r = gameObject.GetComponent<Rigidbody>();
if (r == null)
gameObject.AddComponent<Rigidbody>().isKinematic = true;
else
r.isKinematic = true;
if (_fT == null)
{
Debug.Log(gameObject.name + " can't find the FootStepFromTexture");
gameObject.SetActive(false);
}
else
{
var colliders = _fT.gameObject.GetComponentsInChildren<Collider>(true);
for (int i = 0; i < colliders.Length; i++)
{
var c = colliders[i];
if (c!=null && c.gameObject != trigger.gameObject)
{
Physics.IgnoreCollision(c, trigger, true);
}
}
}
}
public Collider trigger
{
get
{
if (_trigger == null) _trigger =gameObject.GetComponent<Collider>();
return _trigger;
}
}
protected Collider lastCollider;
internal FootStepObject footstepObj;
void OnTriggerEnter(Collider other)
{
if (_fT == null) return;
if ((lastCollider == null || lastCollider != other) || footstepObj == null)
{
footstepObj = new FootStepObject(transform, other);
lastCollider = other;
}
if (footstepObj.isTerrain) //Check if trigger objet is a terrain
{
_fT.StepOnTerrain(footstepObj);
OnStep.Invoke();
}
else
{
_fT.StepOnMesh(footstepObj);
OnStep.Invoke();
}
}
}
/// <summary>
/// Foot step Object work with FootStepFromTexture
/// </summary>
public class FootStepObject
{
public string name;
public Transform sender;
public Collider ground;
public Terrain terrain;
public bool isTerrain { get { return terrain != null; } }
public vFootStepHandler stepHandle;
public Renderer renderer;
public bool spawnSoundEffect;
public bool spawnStepMarkEffect;
public bool spawnParticleEffect;
public float volume;
public FootStepObject(Transform sender, Collider ground)
{
this.name = "";
this.sender = sender;
this.ground = ground;
this.terrain = ground.GetComponent<Terrain>();
this.stepHandle = ground.GetComponent<vFootStepHandler>();
this.renderer = ground.GetComponent<Renderer>();
spawnSoundEffect = true;
spawnStepMarkEffect = true;
spawnParticleEffect = true;
volume = 1;
if (renderer != null && renderer.material != null)
{
var index = 0;
this.name = string.Empty;
if (stepHandle != null && stepHandle.material_ID > 0)// if trigger contains a StepHandler to pass material ID. Default is (0)
index = stepHandle.material_ID;
if (stepHandle)
{
// check stepHandlerType
switch (stepHandle.stepHandleType)
{
case vFootStepHandler.StepHandleType.materialName:
this.name = renderer.materials[index].name;
break;
case vFootStepHandler.StepHandleType.textureName:
this.name = renderer.materials[index].mainTexture.name;
break;
}
}
else
this.name = renderer.materials[index].name;
}
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 1b04f4ac1b776ff48b5f78a97b57f776
timeCreated: 1429924045
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: dda0adb2daa01e54f998c67fc75dd1ad
folderAsset: yes
timeCreated: 1458357294
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,52 @@
fileFormatVersion: 2
guid: 5b303ff28ad9368468a2edd759cf458d
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: .25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 8
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 1024
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: .5, y: .5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
spritePackingTag:
userData:
assetBundleName:

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -0,0 +1,57 @@
fileFormatVersion: 2
guid: e24bbbeb25aaffe43ad3fc7b06fa5170
timeCreated: 1458358658
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 1
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 1
externalNormalMap: 1
heightScale: 0.078
normalMapFilter: 1
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: 1
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -0,0 +1,57 @@
fileFormatVersion: 2
guid: 1529461d937a8274a99c03ccc8fbc6a2
timeCreated: 1458359022
licenseType: Store
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 512
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant: