Added audio

This commit is contained in:
AbstractConcept 2022-11-01 16:38:31 -05:00
parent 270c4cf55b
commit 876ffe65d0
277 changed files with 1194 additions and 176 deletions

View File

@ -76,13 +76,16 @@
<Compile Include="Assets\Scripts\AnimationComponents\PawnKeyframe.cs" />
<Compile Include="Assets\Scripts\AnimationComponents\PawnRaceDef.cs" />
<Compile Include="Assets\Scripts\AnimationComponents\PawnRaceOffset.cs" />
<Compile Include="Assets\Scripts\AudioController.cs" />
<Compile Include="Assets\Scripts\Data\ActorPosition.cs" />
<Compile Include="Assets\Scripts\Data\Constants.cs" />
<Compile Include="Assets\Scripts\Data\DefaultTags.cs" />
<Compile Include="Assets\Scripts\Data\Enums.cs" />
<Compile Include="Assets\Scripts\Data\SoundDef.cs" />
<Compile Include="Assets\Scripts\DefParents\ActorAddonDefs.cs" />
<Compile Include="Assets\Scripts\DefParents\AnimationDefs.cs" />
<Compile Include="Assets\Scripts\DefParents\PawnRaceDefs.cs" />
<Compile Include="Assets\Scripts\DefParents\SoundDefs.cs" />
<Compile Include="Assets\Scripts\Extensions\IListExtensions.cs" />
<Compile Include="Assets\Scripts\Extensions\ObjectExtensions.cs" />
<Compile Include="Assets\Scripts\Extensions\TransformExtensions.cs" />
@ -155,6 +158,7 @@
<Compile Include="Assets\StandaloneFileBrowser\StandaloneFileBrowserLinux.cs" />
<Compile Include="Assets\StandaloneFileBrowser\StandaloneFileBrowserMac.cs" />
<Compile Include="Assets\StandaloneFileBrowser\StandaloneFileBrowserWindows.cs" />
<None Include="Assets\StreamingAssets\soundDefs.xml" />
<None Include="Assets\StreamingAssets\pawnRaceDefs.xml" />
<None Include="Assets\StreamingAssets\AnimationDefs\newAnimationDef.xml" />
<None Include="Assets\StreamingAssets\keybindConfig.xml" />

View File

@ -310,6 +310,8 @@ GameObject:
m_Component:
- component: {fileID: 7929422520673851209}
- component: {fileID: -4411442180840688308}
- component: {fileID: 5748137139072107553}
- component: {fileID: 8645726803575667570}
m_Layer: 0
m_Name: ActorBody
m_TagString: Untagged
@ -350,6 +352,114 @@ MonoBehaviour:
bodyRenderer: {fileID: 5996161745621340017}
actorBodyPartPrefab: {fileID: 6079743031150361545, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
--- !u!82 &5748137139072107553
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7929422520673851210}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
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: 4
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: 4
reverbZoneMixCustomCurve:
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: 4
--- !u!114 &8645726803575667570
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7929422520673851210}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e5ead9ecb50b3174c8e2716f7fe1ac3c, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &9122292209377678227
GameObject:
m_ObjectHideFlags: 0

View File

@ -6083,7 +6083,7 @@ MonoBehaviour:
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Select actor defs window
m_Text: Actor allowed races window
--- !u!222 &369911216
CanvasRenderer:
m_ObjectHideFlags: 0
@ -13978,7 +13978,7 @@ MonoBehaviour:
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Add sound to keyframe window
m_Text: Keyframe sound window
--- !u!222 &731648731
CanvasRenderer:
m_ObjectHideFlags: 0
@ -14953,7 +14953,7 @@ MonoBehaviour:
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Select sex types window
m_Text: Animation sex types window
--- !u!222 &825034537
CanvasRenderer:
m_ObjectHideFlags: 0
@ -24393,7 +24393,7 @@ MonoBehaviour:
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Select actor body parts window
m_Text: Actor body parts window
--- !u!222 &1351975247
CanvasRenderer:
m_ObjectHideFlags: 0
@ -35075,7 +35075,7 @@ MonoBehaviour:
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Select interaction defs window
m_Text: Animation interaction defs window
--- !u!222 &1976644223
CanvasRenderer:
m_ObjectHideFlags: 0
@ -35805,7 +35805,7 @@ MonoBehaviour:
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Select actor body def types window
m_Text: Actor body def types window
--- !u!222 &2050414526
CanvasRenderer:
m_ObjectHideFlags: 0

View File

@ -0,0 +1,52 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Networking;
namespace RimWorldAnimationStudio
{
public class AudioController : MonoBehaviour
{
private AudioSource audioSource;
private void Start()
{
audioSource = GetComponent<AudioSource>();
}
public void PlaySound(string soundDefName)
{
SoundDef soundDef = SoundDefs.GetNamed(soundDefName);
if (soundDef == null)
{
Debug.LogWarning("Could not play audio clip - SoundDef '" + soundDefName + "' was not found");
return;
}
foreach (SubSoundDef subSoundDef in soundDef.subSounds)
{
AudioGrain audioGrain = subSoundDef.grains[UnityEngine.Random.Range(0, subSoundDef.grains.Count - 1)];
string fullPath = Path.GetFullPath(Path.Combine(Application.streamingAssetsPath, "Sounds", audioGrain.clipPath)) + ".wav";
AudioClip audioClip = SoundDefs.GetAudioClip(fullPath);
if (audioClip == null) return;
// Set up audio source to play
audioSource.clip = audioClip;
audioSource.volume = UnityEngine.Random.Range(subSoundDef.volumeRange.min, subSoundDef.volumeRange.max);
audioSource.minDistance = subSoundDef.distRange.min;
audioSource.maxDistance = subSoundDef.distRange.max;
audioSource.pitch = UnityEngine.Random.Range(subSoundDef.pitchRange.min, subSoundDef.pitchRange.max);
audioSource.Play();
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e5ead9ecb50b3174c8e2716f7fe1ac3c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
using UnityEngine;
namespace RimWorldAnimationStudio
{
[Serializable]
public class SoundDef
{
public string defName;
public int maxSimultaneous;
public int maxVoices;
[XmlArray("subSounds"), XmlArrayItem("li")] public List<SubSoundDef> subSounds;
}
[Serializable]
public class SubSoundDef
{
[XmlArray("grains"), XmlArrayItem("li")] public List<AudioGrain> grains;
public FloatRange volumeRange;
public FloatRange pitchRange;
public FloatRange distRange;
}
[Serializable]
public class AudioGrain
{
public string clipPath;
}
[Serializable]
public class FloatRange
{
public float min;
public float max;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 809f70f9c2ecfe64e80d88134af30c81
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,54 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Networking;
namespace RimWorldAnimationStudio
{
public class SoundDefs
{
public static List<SoundDef> allDefs = new List<SoundDef>();
public static Dictionary<string, AudioClip> audioClips = new Dictionary<string, AudioClip>();
public static SoundDef GetNamed(string defName)
{
return allDefs.FirstOrDefault(x => x.defName == defName);
}
public static void AddDef(SoundDef soundDef)
{
if (allDefs.Any(x => x.defName == soundDef.defName)) return;
allDefs.Add(soundDef);
}
public static void AddAudioClip(string path, AudioClip audioClip)
{
if (audioClips.TryGetValue(path, out AudioClip _audioClip) == false)
{ audioClips.Add(path, audioClip); }
else
{ audioClips[path] = audioClip; }
}
public static AudioClip GetAudioClip(string path)
{
if (audioClips.TryGetValue(path, out AudioClip audioClip) == false)
{
Debug.LogWarning("Could not find audio clip '" + path + "'");
return null;
}
return audioClip;
}
public static void OnLoad()
{
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2a2030426d02b0346b4ee939407ca0f0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -184,6 +184,15 @@ namespace RimWorldAnimationStudio
actorBodypart.gameObject.SetActive(addon.Render);
}
// Play sounds
if (Workspace.IsAnimating)
{
PawnKeyframe keyframe = clip.keyframes.FirstOrDefault(x => x.atTick == Workspace.StageTick);
if (keyframe != null && string.IsNullOrEmpty(keyframe.soundEffect) == false)
{ actorBody.GetComponent<AudioController>().PlaySound(keyframe.soundEffect); }
}
}
}

View File

@ -3,10 +3,12 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using SFB;
using System.Collections;
namespace RimWorldAnimationStudio
{
@ -20,6 +22,8 @@ namespace RimWorldAnimationStudio
{
LoadPawnRaceDefs();
LoadActorAddonDefs();
LoadSoundDefs();
LoadAudioClips();
LoadCustomArrays();
}
@ -281,5 +285,60 @@ namespace RimWorldAnimationStudio
{
}
public void LoadSoundDefs()
{
string path;
if (File.Exists(Path.Combine(Application.persistentDataPath, "soundDefs.xml")))
{ path = Path.Combine(Application.persistentDataPath, "soundDefs.xml"); }
else
{ path = Path.Combine(Application.streamingAssetsPath, "soundDefs.xml"); }
SoundDefs.allDefs = XmlUtility.ReadXML<List<SoundDef>>(path);
SaveSoundDefs();
SoundDefs.OnLoad();
}
public void SaveSoundDefs()
{
}
public void LoadAudioClips()
{
StartCoroutine(LoadAudioClipsCoroutine());
}
private IEnumerator LoadAudioClipsCoroutine()
{
foreach (SoundDef soundDef in SoundDefs.allDefs)
{
foreach (SubSoundDef subSoundDef in soundDef.subSounds)
{
foreach (AudioGrain audioGrain in subSoundDef.grains)
{
string fullPath = Path.GetFullPath(Path.Combine(Application.streamingAssetsPath, "Sounds", audioGrain.clipPath)) + ".wav";
using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(fullPath, AudioType.WAV))
{
yield return www.SendWebRequest();
if (string.IsNullOrEmpty(www.error) == false)
{
Debug.Log("Could not load audio clip '" + fullPath + "' - .WAV audio clip was not found");
continue;
}
AudioClip audioClip = DownloadHandlerAudioClip.GetContent(www);
SoundDefs.AddAudioClip(fullPath, audioClip);
}
}
}
}
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2a967303b3085664080e2fec7914a54c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fa0a5f5134a317d48a260b3ae32dd642
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c81541a07130f4f4681152d01506e946
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c3bcf4722dc65a443ac557f763ee66c5
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1d45453b0e8e6714b9bd67174af8ed44
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c95ca37ad46561f4988a703d1da737d1
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7b2bf6d2ca1c12344bc0405170530f14
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: dde7b2f77ccb3fa4fb356434773bff54
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c6807c089f1f3f348a6ae6d8c9e39f58
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f4aa31b2155d9a2428bf467a9d0baa0f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 68316b56875713348b152d1cb0bbe513
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9491a1abb0635cf4886e6f4245916010
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b0f2cf57927e62e47a46dd26fc49a5f5
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2966ac040a0cb6a4cb4674b57c9c24b2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5199eccecef9950498db7c53f0a6d0c2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: cdf18f5430ef7a24082086b132e870a3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bbbdc994b0a7ba5489ee2855b7a50be4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 97e40214dffd9284d96ee95674a71932
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 918ad6f87c9169d4a98b2d7077f0733e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 40f4a5c1dc99e684aad0303f4ec02b61
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d9250a56f950a6b4c9b613cd9557b284
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3b3ec8f524313964eb2eee0fa249a038
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 70423760cd4b8714893338145d262e0c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0f706572f5c5fdc4b84aa11ff09c3e4c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5c06a4bed68d21746b2ce811e23c8f82
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d155d827cf9c690449dd0286c85f068e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 14fec373313e9da42b49e3ab77627a66
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 256654fffe81e5546b8c7e996f0b6809
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: af165f957ccbf9840805ad5cde228299
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4b59318c02ce9944b939235dc300a502
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: afd2ebaa47266e64c8498d6ce180e4d8
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: eb99ee4371e8dd34cae8c955bad5bd73
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,211 @@
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfSoundDef>
<SoundDef>
<defName>Cum</defName>
<context>MapOnly</context>
<eventNames />
<maxSimultaneous>1</maxSimultaneous>
<maxVoices>1</maxVoices>
<subSounds>
<li>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>Sex/cum</clipPath>
</li>
</grains>
<volumeRange>
<min>30</min>
<max>40</max>
</volumeRange>
<pitchRange>
<min>0.8</min>
<max>1.2</max>
</pitchRange>
<distRange>
<min>0</min>
<max>51.86047</max>
</distRange>
<sustainLoop>False</sustainLoop>
</li>
</subSounds>
</SoundDef>
<SoundDef>
<defName>Sex</defName>
<context>MapOnly</context>
<eventNames />
<maxSimultaneous>1</maxSimultaneous>
<maxVoices>1</maxVoices>
<subSounds>
<li>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>Sex/kucyu04</clipPath>
</li>
</grains>
<volumeRange>
<min>16</min>
<max>16</max>
</volumeRange>
<pitchRange>
<min>0.8</min>
<max>1.2</max>
</pitchRange>
<distRange>
<min>0</min>
<max>51.86047</max>
</distRange>
<sustainLoop>False</sustainLoop>
</li>
</subSounds>
</SoundDef>
<SoundDef>
<defName>Suck</defName>
<context>MapOnly</context>
<eventNames />
<maxSimultaneous>1</maxSimultaneous>
<maxVoices>1</maxVoices>
<subSounds>
<li>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Suck/Suck_1</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Suck/Suck_2</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Suck/Suck_3</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Suck/Suck_4</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Suck/Suck_5</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Suck/Suck_6</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Suck/Suck_7</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Suck/Suck_8</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Suck/Suck_9</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Suck/Suck_10</clipPath>
</li>
</grains>
<volumeRange>
<min>20</min>
<max>35</max>
</volumeRange>
<pitchRange>
<min>1.0</min>
<max>1.0</max>
</pitchRange>
<distRange>
<min>0</min>
<max>51.86047</max>
</distRange>
<repeatMode>NeverTwice</repeatMode>
<sustainLoop>false</sustainLoop>
</li>
</subSounds>
</SoundDef>
<SoundDef>
<defName>Fuck</defName>
<context>MapOnly</context>
<eventNames />
<maxSimultaneous>1</maxSimultaneous>
<maxVoices>1</maxVoices>
<subSounds>
<li>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Clap_1</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Clap_2</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Clap_3</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Clap_4</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Clap_5</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Clap_6</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Clap_7</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Clap_8</clipPath>
</li>
</grains>
<volumeRange>
<min>45</min>
<max>70</max>
</volumeRange>
<pitchRange>
<min>1.0</min>
<max>1.0</max>
</pitchRange>
<distRange>
<min>0</min>
<max>51.86047</max>
</distRange>
<repeatMode>NeverTwice</repeatMode>
<sustainLoop>false</sustainLoop>
</li>
</subSounds>
</SoundDef>
<SoundDef>
<defName>Slimy</defName>
<context>MapOnly</context>
<eventNames />
<maxSimultaneous>1</maxSimultaneous>
<maxVoices>1</maxVoices>
<subSounds>
<li>
<grains>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Slime/Slimy1</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Slime/Slimy2</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Slime/Slimy3</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Slime/Slimy4</clipPath>
</li>
<li Class="AudioGrain_Clip">
<clipPath>Sex/Slime/Slimy5</clipPath>
</li>
</grains>
<volumeRange>
<min>45</min>
<max>75</max>
</volumeRange>
<pitchRange>
<min>1.4</min>
<max>1.8</max>
</pitchRange>
<distRange>
<min>0</min>
<max>100</max>
</distRange>
<repeatMode>NeverTwice</repeatMode>
<sustainLoop>false</sustainLoop>
</li>
</subSounds>
</SoundDef>
</ArrayOfSoundDef>

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b4991d014be687145b898fb3dd16d6f0
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More