From 5876a4d392f4f1742325c65e52e7201e0f43108b Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 7 Jun 2012 00:24:07 +0200
Subject: Prevent a null ref when getting the velocity of an avatar during
 login or logout.

---
 OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index d83b05d..a51c625 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -2536,12 +2536,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
         {
             m_host.AddScriptLPS(1);
 
-            Vector3 vel;
+            Vector3 vel = Vector3.Zero;
 
             if (m_host.ParentGroup.IsAttachment)
             {
                 ScenePresence avatar = m_host.ParentGroup.Scene.GetScenePresence(m_host.ParentGroup.AttachedAvatar);
-                vel = avatar.Velocity;
+                if (avatar != null)
+                    vel = avatar.Velocity;
             }
             else
             {
-- 
cgit v1.1


From a94510500357848f2dee26e599abad5256d2f5eb Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 7 Jun 2012 00:24:33 +0200
Subject: Make timed bans / timed passes work as expected. Prevent transmission
 of media URLs to banned clients.

---
 .../CoreModules/World/Land/LandManagementModule.cs |  7 ++++--
 .../Region/CoreModules/World/Land/LandObject.cs    | 29 ++++++++++++++++++++++
 2 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index 02ac091..add1551 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -1101,8 +1101,11 @@ namespace OpenSim.Region.CoreModules.World.Land
                     {
                         if (!temp.Contains(currentParcel))
                         {
-                            currentParcel.ForceUpdateLandInfo();
-                            temp.Add(currentParcel);
+                            if (!currentParcel.IsEitherBannedOrRestricted(remote_client.AgentId))
+                            {
+                                currentParcel.ForceUpdateLandInfo();
+                                temp.Add(currentParcel);
+                            }
                         }
                     }
                 }
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs
index 509c4d7..4284444 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs
@@ -50,6 +50,7 @@ namespace OpenSim.Region.CoreModules.World.Land
         private bool[,] m_landBitmap = new bool[landArrayMax,landArrayMax];
 
         private int m_lastSeqId = 0;
+        private int m_expiryCounter = 0;
 
         protected LandData m_landData = new LandData();        
         protected Scene m_scene;
@@ -135,6 +136,8 @@ namespace OpenSim.Region.CoreModules.World.Land
             else
                 LandData.GroupID = UUID.Zero;
             LandData.IsGroupOwned = is_group_owned;
+            
+            m_scene.EventManager.OnFrame += OnFrame;
         }
 
         #endregion
@@ -1196,6 +1199,17 @@ namespace OpenSim.Region.CoreModules.World.Land
 
         #endregion
 
+        private void OnFrame()
+        {
+            m_expiryCounter++;
+
+            if (m_expiryCounter >= 50)
+            {
+                ExpireAccessList();
+                m_expiryCounter = 0;
+            }
+        }
+
         private void ExpireAccessList()
         {
             List<LandAccessEntry> delete = new List<LandAccessEntry>();
@@ -1206,7 +1220,22 @@ namespace OpenSim.Region.CoreModules.World.Land
                     delete.Add(entry);
             }
             foreach (LandAccessEntry entry in delete)
+            {
                 LandData.ParcelAccessList.Remove(entry);
+                ScenePresence presence;
+                
+                if (m_scene.TryGetScenePresence(entry.AgentID, out presence) && (!presence.IsChildAgent))
+                {
+                    ILandObject land = m_scene.LandChannel.GetLandObject(presence.AbsolutePosition.X, presence.AbsolutePosition.Y);
+                    if (land.LandData.LocalID == LandData.LocalID)
+                    {
+                        Vector3 pos = m_scene.GetNearestAllowedPosition(presence, land);
+                        presence.TeleportWithMomentum(pos);
+                        presence.ControllingClient.SendAlertMessage("You have been ejected from this land");
+                    }
+                }
+                m_log.DebugFormat("[LAND]: Removing entry {0} because it has expired", entry.AgentID);
+            }
 
             if (delete.Count > 0)
                 m_scene.EventManager.TriggerLandObjectUpdated((uint)LandData.LocalID, this);
-- 
cgit v1.1


From e93308072ea8ec106e429dc8071795018b58a75a Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 7 Jun 2012 16:32:07 +0200
Subject: Make the "delay restart" button delay restart for 1 hour rather than
 aborting it altogether. Allow a maximum of three uses before the restart goes
 through.

---
 .../World/Estate/EstateManagementModule.cs         |  8 ++-
 .../CoreModules/World/Region/RestartModule.cs      | 83 ++++++++++++++--------
 .../Region/Framework/Interfaces/IRestartModule.cs  |  1 +
 3 files changed, 61 insertions(+), 31 deletions(-)

diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
index 1e743c3..97a2f4a 100644
--- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
@@ -61,6 +61,8 @@ namespace OpenSim.Region.CoreModules.World.Estate
         public event ChangeDelegate OnEstateInfoChange;
         public event MessageDelegate OnEstateMessage;
 
+        private int m_delayCount = 0;
+
         #region Packet Data Responders
 
         private void clientSendDetailedEstateData(IClientAPI remote_client, UUID invoice)
@@ -259,7 +261,11 @@ namespace OpenSim.Region.CoreModules.World.Estate
             {
                 if (timeInSeconds == -1)
                 {
-                    restartModule.AbortRestart("Restart aborted by region manager");
+                    m_delayCount++;
+                    if (m_delayCount > 3)
+                        return;
+
+                    restartModule.DelayRestart(3600, "Restart delayed by region manager");
                     return;
                 }
 
diff --git a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs
index 65180b5a..287738a 100644
--- a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs
+++ b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs
@@ -59,6 +59,7 @@ namespace OpenSim.Region.CoreModules.World.Region
         protected bool m_Notice = false;
         protected IDialogModule m_DialogModule = null;
         protected string m_MarkerPath = String.Empty;
+        private int[] m_CurrentAlerts = null;
 
         public void Initialise(IConfigSource config)
         {
@@ -141,6 +142,7 @@ namespace OpenSim.Region.CoreModules.World.Region
             m_Message = message;
             m_Initiator = initiator;
             m_Notice = notice;
+            m_CurrentAlerts = alerts;
             m_Alerts = new List<int>(alerts);
             m_Alerts.Sort();
             m_Alerts.Reverse();
@@ -152,12 +154,12 @@ namespace OpenSim.Region.CoreModules.World.Region
                 return;
             }
 
-            int nextInterval = DoOneNotice();
+            int nextInterval = DoOneNotice(true);
 
             SetTimer(nextInterval);
         }
 
-        public int DoOneNotice()
+        public int DoOneNotice(bool sendOut)
         {
             if (m_Alerts.Count == 0 || m_Alerts[0] == 0)
             {
@@ -182,34 +184,37 @@ namespace OpenSim.Region.CoreModules.World.Region
 
             m_Alerts.RemoveAt(0);
 
-            int minutes = currentAlert / 60;
-            string currentAlertString = String.Empty;
-            if (minutes > 0)
+            if (sendOut)
             {
-                if (minutes == 1)
-                    currentAlertString += "1 minute";
-                else
-                    currentAlertString += String.Format("{0} minutes", minutes);
+                int minutes = currentAlert / 60;
+                string currentAlertString = String.Empty;
+                if (minutes > 0)
+                {
+                    if (minutes == 1)
+                        currentAlertString += "1 minute";
+                    else
+                        currentAlertString += String.Format("{0} minutes", minutes);
+                    if ((currentAlert % 60) != 0)
+                        currentAlertString += " and ";
+                }
                 if ((currentAlert % 60) != 0)
-                    currentAlertString += " and ";
-            }
-            if ((currentAlert % 60) != 0)
-            {
-                int seconds = currentAlert % 60;
-                if (seconds == 1)
-                    currentAlertString += "1 second";
-                else
-                    currentAlertString += String.Format("{0} seconds", seconds);
-            }
+                {
+                    int seconds = currentAlert % 60;
+                    if (seconds == 1)
+                        currentAlertString += "1 second";
+                    else
+                        currentAlertString += String.Format("{0} seconds", seconds);
+                }
 
-            string msg = String.Format(m_Message, currentAlertString);
+                string msg = String.Format(m_Message, currentAlertString);
 
-            if (m_DialogModule != null && msg != String.Empty)
-            {
-                if (m_Notice)
-                    m_DialogModule.SendGeneralAlert(msg);
-                else
-                    m_DialogModule.SendNotificationToUsersInRegion(m_Initiator, "System", msg);
+                if (m_DialogModule != null && msg != String.Empty)
+                {
+                    if (m_Notice)
+                        m_DialogModule.SendGeneralAlert(msg);
+                    else
+                        m_DialogModule.SendNotificationToUsersInRegion(m_Initiator, "System", msg);
+                }
             }
 
             return currentAlert - nextAlert;
@@ -226,7 +231,25 @@ namespace OpenSim.Region.CoreModules.World.Region
 
         private void OnTimer(object source, ElapsedEventArgs e)
         {
-            int nextInterval = DoOneNotice();
+            int nextInterval = DoOneNotice(true);
+
+            SetTimer(nextInterval);
+        }
+
+        public void DelayRestart(int seconds, string message)
+        {
+            if (m_CountdownTimer == null)
+                return;
+
+            m_CountdownTimer.Stop();
+            m_CountdownTimer = null;
+
+            m_Alerts = new List<int>(m_CurrentAlerts);
+            m_Alerts.Add(seconds);
+            m_Alerts.Sort();
+            m_Alerts.Reverse();
+
+            int nextInterval = DoOneNotice(false);
 
             SetTimer(nextInterval);
         }
@@ -240,9 +263,9 @@ namespace OpenSim.Region.CoreModules.World.Region
                 if (m_DialogModule != null && message != String.Empty)
                     m_DialogModule.SendGeneralAlert(message);
             }
-           if (m_MarkerPath != String.Empty)
-               File.Delete(Path.Combine(m_MarkerPath,
-                       m_Scene.RegionInfo.RegionID.ToString()));
+            if (m_MarkerPath != String.Empty)
+                File.Delete(Path.Combine(m_MarkerPath,
+                        m_Scene.RegionInfo.RegionID.ToString()));
         }
         
         private void HandleRegionRestart(string module, string[] args)
diff --git a/OpenSim/Region/Framework/Interfaces/IRestartModule.cs b/OpenSim/Region/Framework/Interfaces/IRestartModule.cs
index c68550f..9b25beb 100644
--- a/OpenSim/Region/Framework/Interfaces/IRestartModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IRestartModule.cs
@@ -35,5 +35,6 @@ namespace OpenSim.Region.Framework.Interfaces
         TimeSpan TimeUntilRestart { get; }
         void ScheduleRestart(UUID initiator, string message, int[] alerts, bool notice);
         void AbortRestart(string message);
+        void DelayRestart(int seconds, string message);
     }
 }
-- 
cgit v1.1


From 91557f18cd796e64158d2e3dbdef28d0b3927d1b Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 7 Jun 2012 17:59:20 +0200
Subject: Set collision sound type so custom sound types are recognized

---
 OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index a51c625..37738a5 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -4812,6 +4812,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             {
                 m_host.CollisionSoundVolume = (float)impact_volume;
                 m_host.CollisionSound = m_host.invalidCollisionSoundUUID;
+                m_host,CollisionSoundType = 0;
                 return;
             }
             // TODO: Parameter check logic required.
@@ -4831,6 +4832,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             }
             m_host.CollisionSoundVolume = (float)impact_volume;
             m_host.CollisionSound = soundId;
+            m_host.CollisionSoundType = 1;
         }
 
         public LSL_String llGetAnimation(string id)
-- 
cgit v1.1


From 64aefe9c28fd5ceb9c92b4069d7915d6b77356fa Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 7 Jun 2012 17:59:38 +0200
Subject: Disable default collision sounds until they can be uploaded, but
 enable custom ones

---
 OpenSim/Region/Framework/Scenes/CollisionSounds.cs | 111 +++++++++++----------
 1 file changed, 56 insertions(+), 55 deletions(-)

diff --git a/OpenSim/Region/Framework/Scenes/CollisionSounds.cs b/OpenSim/Region/Framework/Scenes/CollisionSounds.cs
index de82ddc..d72cf41 100644
--- a/OpenSim/Region/Framework/Scenes/CollisionSounds.cs
+++ b/OpenSim/Region/Framework/Scenes/CollisionSounds.cs
@@ -188,9 +188,6 @@ namespace OpenSim.Region.Framework.Scenes
         
         public static void PartCollisionSound(SceneObjectPart part, List<CollisionForSoundInfo> collidersinfolist)
         {
-            // disable for now
-            return;
-
             if (collidersinfolist.Count == 0 || part == null)
                 return;
 
@@ -238,17 +235,19 @@ namespace OpenSim.Region.Framework.Scenes
                         {
                             if (!HaveSound)
                             {
-                                volume = Math.Abs(colInfo.relativeVel);
-                                if (volume < 0.2f)
-                                    continue;
-
-                                volume *= volume * .0625f; // 4m/s == full volume
-                                if (volume > 1.0f)
-                                    volume = 1.0f;
-
-                                soundID = m_TerrainPart[thisMaterial];
+// TODO: Import real collision sounds and uncomment this
+//                                volume = Math.Abs(colInfo.relativeVel);
+//                                if (volume < 0.2f)
+//                                    continue;
+//
+//                                volume *= volume * .0625f; // 4m/s == full volume
+//                                if (volume > 1.0f)
+//                                    volume = 1.0f;
+//
+//                                soundID = m_TerrainPart[thisMaterial];
                             }
-                            part.SendCollisionSound(soundID, volume, colInfo.position);
+                            else // Remove this else when uncommenting the above
+                                part.SendCollisionSound(soundID, volume, colInfo.position);
                             doneownsound = true;
                         }
                         continue;
@@ -269,40 +268,41 @@ namespace OpenSim.Region.Framework.Scenes
                             if (volume == 0.0f)
                                 continue;
                         }
+// TODO: Import real collision sounds and uncomment this
+//                        else
+//                        {
+//                            volume = Math.Abs(colInfo.relativeVel);
+//                            if (volume < 0.2f)
+//                                continue;
+//
+//                            volume *= volume * .0625f; // 4m/s == full volume
+//                            if (volume > 1.0f)
+//                                volume = 1.0f;
+//
+//                            int otherMaterial = (int)otherPart.Material;
+//                            if (otherMaterial >= MaxMaterials)
+//                                otherMaterial = 3;
+//
+//                            soundID = m_PartPart[thisMatScaled + otherMaterial];
+//                        }
+                    }
+
+                    if (soundID != UUID.Zero) // Remove when sounds are there
+                    { // Remove when sounds are there
+                        if (doneownsound)
+                            otherPart.SendCollisionSound(soundID, volume, colInfo.position);
                         else
                         {
-                            volume = Math.Abs(colInfo.relativeVel);
-                            if (volume < 0.2f)
-                                continue;
-
-                            volume *= volume * .0625f; // 4m/s == full volume
-                            if (volume > 1.0f)
-                                volume = 1.0f;
-
-                            int otherMaterial = (int)otherPart.Material;
-                            if (otherMaterial >= MaxMaterials)
-                                otherMaterial = 3;
-
-                            soundID = m_PartPart[thisMatScaled + otherMaterial];
+                            part.SendCollisionSound(soundID, volume, colInfo.position);
+                            doneownsound = true;
                         }
-                    }
-
-                    if (doneownsound)
-                        otherPart.SendCollisionSound(soundID, volume, colInfo.position);
-                    else
-                    {
-                        part.SendCollisionSound(soundID, volume, colInfo.position);
-                        doneownsound = true;
-                    }
+                    } // Remove when sounds are there
                 }
             }
         }
 
         public static void AvatarCollisionSound(ScenePresence av, List<CollisionForSoundInfo> collidersinfolist)
          {
-             // disable for now
-             return;
-
             if (collidersinfolist.Count == 0 || av == null)
                 return;
 
@@ -341,22 +341,23 @@ namespace OpenSim.Region.Framework.Scenes
                         continue;
                     if (otherPart.CollisionSoundType > 0 && otherPart.CollisionSoundVolume > 0f)
                         otherPart.SendCollisionSound(otherPart.CollisionSound, otherPart.CollisionSoundVolume, colInfo.position);
-                    else
-                    {
-                        volume = Math.Abs(colInfo.relativeVel);
-                        if (volume < 0.2f)
-                            continue;
-
-                        volume *= volume * .0625f; // 4m/s == full volume
-                        if (volume > 1.0f)
-                            volume = 1.0f;
-                        otherMaterial = (int)otherPart.Material;
-                        if (otherMaterial >= MaxMaterials)
-                            otherMaterial = 3;
-
-                        soundID = m_PartPart[thisMatScaled + otherMaterial];
-                        otherPart.SendCollisionSound(soundID, volume, colInfo.position);
-                    }
+//TODO: uncomment below when sounds are uploaded
+//                    else
+//                    {
+//                        volume = Math.Abs(colInfo.relativeVel);
+//                        if (volume < 0.2f)
+//                            continue;
+//
+//                        volume *= volume * .0625f; // 4m/s == full volume
+//                        if (volume > 1.0f)
+//                            volume = 1.0f;
+//                        otherMaterial = (int)otherPart.Material;
+//                        if (otherMaterial >= MaxMaterials)
+//                            otherMaterial = 3;
+//
+//                        soundID = m_PartPart[thisMatScaled + otherMaterial];
+//                        otherPart.SendCollisionSound(soundID, volume, colInfo.position);
+//                    }
                     continue;
                 }
 /*
@@ -374,4 +375,4 @@ namespace OpenSim.Region.Framework.Scenes
             }
         }
     }
-}
\ No newline at end of file
+}
-- 
cgit v1.1


From 31bc9c3ad34d280d7be89dae20ecb9486b5065bb Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 7 Jun 2012 18:04:09 +0200
Subject: Typo correction

---
 OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 37738a5..667aa93 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -4812,7 +4812,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             {
                 m_host.CollisionSoundVolume = (float)impact_volume;
                 m_host.CollisionSound = m_host.invalidCollisionSoundUUID;
-                m_host,CollisionSoundType = 0;
+                m_host.CollisionSoundType = 0;
                 return;
             }
             // TODO: Parameter check logic required.
-- 
cgit v1.1


From f5cbe56c569ad9453a055adba0636cf4a6614ec3 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 7 Jun 2012 19:01:33 +0200
Subject: Make not_at_target stop when the target is reached even if the script
 is not listening to at_target

---
 OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 7568888..8fa7880 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -3926,10 +3926,11 @@ namespace OpenSim.Region.Framework.Scenes
                             scriptPosTarget target = m_targets[idx];
                             if (Util.GetDistanceTo(target.targetPos, m_rootPart.GroupPosition) <= target.tolerance)
                             {
+                                at_target = true;
+
                                 // trigger at_target
                                 if (m_scriptListens_atTarget)
                                 {
-                                    at_target = true;
                                     scriptPosTarget att = new scriptPosTarget();
                                     att.targetPos = target.targetPos;
                                     att.tolerance = target.tolerance;
-- 
cgit v1.1


From 354ac8c9789345299283d173abfc49ca13607a74 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 7 Jun 2012 19:02:43 +0200
Subject: Add collision sounds to the asset set

---
 bin/assets/AssetSets.xml                           |   6 +
 .../CollisionSoundsAssetSet.xml                    | 341 +++++++++++++++++++++
 bin/assets/CollisionSoundsAssetSet/attribution.txt |   8 +
 .../CollisionSoundsAssetSet/snd_FleshFlesh.ogg     | Bin 0 -> 8829 bytes
 .../CollisionSoundsAssetSet/snd_FleshGlass.ogg     | Bin 0 -> 8537 bytes
 .../CollisionSoundsAssetSet/snd_FleshMetal.ogg     | Bin 0 -> 12830 bytes
 .../CollisionSoundsAssetSet/snd_FleshPlastic.ogg   | Bin 0 -> 8858 bytes
 .../CollisionSoundsAssetSet/snd_FleshRubber.ogg    | Bin 0 -> 10037 bytes
 .../CollisionSoundsAssetSet/snd_FleshStone.ogg     | Bin 0 -> 10985 bytes
 .../CollisionSoundsAssetSet/snd_FleshWood.ogg      | Bin 0 -> 8835 bytes
 .../CollisionSoundsAssetSet/snd_GlassFlesh.ogg     | Bin 0 -> 8579 bytes
 .../CollisionSoundsAssetSet/snd_GlassGlass.ogg     | Bin 0 -> 5456 bytes
 .../CollisionSoundsAssetSet/snd_GlassMetal.ogg     | Bin 0 -> 13092 bytes
 .../CollisionSoundsAssetSet/snd_GlassPlastic.ogg   | Bin 0 -> 6797 bytes
 .../CollisionSoundsAssetSet/snd_GlassRubber.ogg    | Bin 0 -> 9760 bytes
 .../CollisionSoundsAssetSet/snd_GlassStone.ogg     | Bin 0 -> 11185 bytes
 .../CollisionSoundsAssetSet/snd_GlassWood.ogg      | Bin 0 -> 7048 bytes
 .../CollisionSoundsAssetSet/snd_MetalFlesh.ogg     | Bin 0 -> 12917 bytes
 .../CollisionSoundsAssetSet/snd_MetalGlass.ogg     | Bin 0 -> 13500 bytes
 .../CollisionSoundsAssetSet/snd_MetalMetal.ogg     | Bin 0 -> 13513 bytes
 .../CollisionSoundsAssetSet/snd_MetalPlastic.ogg   | Bin 0 -> 12814 bytes
 .../CollisionSoundsAssetSet/snd_MetalRubber.ogg    | Bin 0 -> 13008 bytes
 .../CollisionSoundsAssetSet/snd_MetalStone.ogg     | Bin 0 -> 13578 bytes
 .../CollisionSoundsAssetSet/snd_MetalWood.ogg      | Bin 0 -> 13040 bytes
 .../CollisionSoundsAssetSet/snd_PlasticFlesh.ogg   | Bin 0 -> 8510 bytes
 .../CollisionSoundsAssetSet/snd_PlasticGlass.ogg   | Bin 0 -> 6797 bytes
 .../CollisionSoundsAssetSet/snd_PlasticMetal.ogg   | Bin 0 -> 12814 bytes
 .../CollisionSoundsAssetSet/snd_PlasticPlastic.ogg | Bin 0 -> 6635 bytes
 .../CollisionSoundsAssetSet/snd_PlasticRubber.ogg  | Bin 0 -> 9648 bytes
 .../CollisionSoundsAssetSet/snd_PlasticStone.ogg   | Bin 0 -> 10640 bytes
 .../CollisionSoundsAssetSet/snd_PlasticWood.ogg    | Bin 0 -> 6845 bytes
 .../CollisionSoundsAssetSet/snd_RubberFlesh.ogg    | Bin 0 -> 9758 bytes
 .../CollisionSoundsAssetSet/snd_RubberGlass.ogg    | Bin 0 -> 9871 bytes
 .../CollisionSoundsAssetSet/snd_RubberMetal.ogg    | Bin 0 -> 12797 bytes
 .../CollisionSoundsAssetSet/snd_RubberPlastic.ogg  | Bin 0 -> 9648 bytes
 .../CollisionSoundsAssetSet/snd_RubberRubber.ogg   | Bin 0 -> 9647 bytes
 .../CollisionSoundsAssetSet/snd_RubberStone.ogg    | Bin 0 -> 10850 bytes
 .../CollisionSoundsAssetSet/snd_RubberWood.ogg     | Bin 0 -> 9716 bytes
 .../CollisionSoundsAssetSet/snd_StoneFlesh.ogg     | Bin 0 -> 10896 bytes
 .../CollisionSoundsAssetSet/snd_StoneGlass.ogg     | Bin 0 -> 11188 bytes
 .../CollisionSoundsAssetSet/snd_StoneMetal.ogg     | Bin 0 -> 13517 bytes
 .../CollisionSoundsAssetSet/snd_StonePlastic.ogg   | Bin 0 -> 11196 bytes
 .../CollisionSoundsAssetSet/snd_StoneRubber.ogg    | Bin 0 -> 10885 bytes
 .../CollisionSoundsAssetSet/snd_StoneStone.ogg     | Bin 0 -> 11040 bytes
 .../CollisionSoundsAssetSet/snd_StoneWood.ogg      | Bin 0 -> 10947 bytes
 .../CollisionSoundsAssetSet/snd_TerrainFlesh.ogg   | Bin 0 -> 8750 bytes
 .../CollisionSoundsAssetSet/snd_TerrainGlass.ogg   | Bin 0 -> 8126 bytes
 .../CollisionSoundsAssetSet/snd_TerrainMetal.ogg   | Bin 0 -> 12839 bytes
 .../CollisionSoundsAssetSet/snd_TerrainPlastic.ogg | Bin 0 -> 7920 bytes
 .../CollisionSoundsAssetSet/snd_TerrainRubber.ogg  | Bin 0 -> 9480 bytes
 .../CollisionSoundsAssetSet/snd_TerrainStone.ogg   | Bin 0 -> 10807 bytes
 .../CollisionSoundsAssetSet/snd_TerrainWood.ogg    | Bin 0 -> 7999 bytes
 .../CollisionSoundsAssetSet/snd_WoodFlesh.ogg      | Bin 0 -> 8827 bytes
 .../CollisionSoundsAssetSet/snd_WoodGlass.ogg      | Bin 0 -> 7057 bytes
 .../CollisionSoundsAssetSet/snd_WoodMetal.ogg      | Bin 0 -> 12818 bytes
 .../CollisionSoundsAssetSet/snd_WoodPlastic.ogg    | Bin 0 -> 6990 bytes
 .../CollisionSoundsAssetSet/snd_WoodRubber.ogg     | Bin 0 -> 9626 bytes
 .../CollisionSoundsAssetSet/snd_WoodStone.ogg      | Bin 0 -> 10931 bytes
 .../CollisionSoundsAssetSet/snd_WoodWood.ogg       | Bin 0 -> 6696 bytes
 59 files changed, 355 insertions(+)
 create mode 100644 bin/assets/CollisionSoundsAssetSet/CollisionSoundsAssetSet.xml
 create mode 100644 bin/assets/CollisionSoundsAssetSet/attribution.txt
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_FleshFlesh.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_FleshGlass.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_FleshMetal.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_FleshPlastic.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_FleshRubber.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_FleshStone.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_FleshWood.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_GlassFlesh.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_GlassGlass.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_GlassMetal.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_GlassPlastic.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_GlassRubber.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_GlassStone.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_GlassWood.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_MetalFlesh.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_MetalGlass.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_MetalMetal.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_MetalPlastic.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_MetalRubber.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_MetalStone.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_MetalWood.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_PlasticFlesh.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_PlasticGlass.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_PlasticMetal.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_PlasticPlastic.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_PlasticRubber.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_PlasticStone.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_PlasticWood.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_RubberFlesh.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_RubberGlass.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_RubberMetal.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_RubberPlastic.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_RubberRubber.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_RubberStone.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_RubberWood.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_StoneFlesh.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_StoneGlass.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_StoneMetal.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_StonePlastic.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_StoneRubber.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_StoneStone.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_StoneWood.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_TerrainFlesh.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_TerrainGlass.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_TerrainMetal.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_TerrainPlastic.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_TerrainRubber.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_TerrainStone.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_TerrainWood.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_WoodFlesh.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_WoodGlass.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_WoodMetal.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_WoodPlastic.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_WoodRubber.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_WoodStone.ogg
 create mode 100644 bin/assets/CollisionSoundsAssetSet/snd_WoodWood.ogg

diff --git a/bin/assets/AssetSets.xml b/bin/assets/AssetSets.xml
index c13ea42..829f845 100644
--- a/bin/assets/AssetSets.xml
+++ b/bin/assets/AssetSets.xml
@@ -68,6 +68,12 @@
   <!---->
   
   <!---->
+  <Section Name="Collision Sounds AssetSet">
+    <Key Name="file" Value="CollisionSoundsAssetSet/CollisionSoundsAssetSet.xml"/>
+  </Section>
+  <!---->
+  
+  <!---->
   <Section Name="Textures AssetSet">
     <Key Name="file" Value="TexturesAssetSet/TexturesAssetSet.xml"/>
   </Section>
diff --git a/bin/assets/CollisionSoundsAssetSet/CollisionSoundsAssetSet.xml b/bin/assets/CollisionSoundsAssetSet/CollisionSoundsAssetSet.xml
new file mode 100644
index 0000000..7498ae0
--- /dev/null
+++ b/bin/assets/CollisionSoundsAssetSet/CollisionSoundsAssetSet.xml
@@ -0,0 +1,341 @@
+<Nini>
+ <!-- Ubit 2012
+   using Nebadon collision sounds collection-->
+   
+  <Section Name="snd_StoneStone">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0800200c9a66" />
+    <Key Name="name" Value="snd_StoneStone" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_StoneStone.ogg" />
+  </Section>
+  <Section Name="snd_StoneMetal">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0800201c9a66" />
+    <Key Name="name" Value="snd_StoneMetal" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_StoneMetal.ogg" />
+  </Section>
+  <Section Name="snd_StoneGlass">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0800202c9a66" />
+    <Key Name="name" Value="snd_StoneGlass" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_StoneGlass.ogg" />
+  </Section>
+  <Section Name="snd_StoneWood">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0800203c9a66" />
+    <Key Name="name" Value="snd_StoneWood" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_StoneWood.ogg" />
+  </Section>
+  <Section Name="snd_StoneFlesh">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0800204c9a66" />
+    <Key Name="name" Value="snd_StoneFlesh" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_StoneFlesh.ogg" />
+  </Section>
+  <Section Name="snd_StonePlastic">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0800205c9a66" />
+    <Key Name="name" Value="snd_StonePlastic" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_StonePlastic.ogg" />
+  </Section>
+  <Section Name="snd_StoneRubber">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0800206c9a66" />
+    <Key Name="name" Value="snd_StoneRubber" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_StoneRubber.ogg" />
+  </Section>
+  <Section Name="snd_MetalStone">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0801200c9a66" />
+    <Key Name="name" Value="snd_MetalStone" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_MetalStone.ogg" />
+  </Section>
+  <Section Name="snd_MetalMetal">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0801201c9a66" />
+    <Key Name="name" Value="snd_MetalMetal" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_MetalMetal.ogg" />
+  </Section>
+  <Section Name="snd_MetalGlass">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0801202c9a66" />
+    <Key Name="name" Value="snd_MetalGlass" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_MetalGlass.ogg" />
+  </Section>
+  <Section Name="snd_MetalWood">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0801203c9a66" />
+    <Key Name="name" Value="snd_MetalWood" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_MetalWood.ogg" />
+  </Section>
+  <Section Name="snd_MetalFlesh">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0801204c9a66" />
+    <Key Name="name" Value="snd_MetalFlesh" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_MetalFlesh.ogg" />
+  </Section>
+  <Section Name="snd_MetalPlastic">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0801205c9a66" />
+    <Key Name="name" Value="snd_MetalPlastic" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_MetalPlastic.ogg" />
+  </Section>
+  <Section Name="snd_MetalRubber">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0801206c9a66" />
+    <Key Name="name" Value="snd_MetalRubber" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_MetalRubber.ogg" />
+  </Section>
+  <Section Name="snd_GlassStone">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0802200c9a66" />
+    <Key Name="name" Value="snd_GlassStone" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_GlassStone.ogg" />
+  </Section>
+  <Section Name="snd_GlassMetal">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0802201c9a66" />
+    <Key Name="name" Value="snd_GlassMetal" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_GlassMetal.ogg" />
+  </Section>
+  <Section Name="snd_GlassGlass">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0802202c9a66" />
+    <Key Name="name" Value="snd_GlassGlass" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_GlassGlass.ogg" />
+  </Section>
+  <Section Name="snd_GlassWood">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0802203c9a66" />
+    <Key Name="name" Value="snd_GlassWood" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_GlassWood.ogg" />
+  </Section>
+  <Section Name="snd_GlassFlesh">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0802204c9a66" />
+    <Key Name="name" Value="snd_GlassFlesh" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_GlassFlesh.ogg" />
+  </Section>
+  <Section Name="snd_GlassPlastic">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0802205c9a66" />
+    <Key Name="name" Value="snd_GlassPlastic" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_GlassPlastic.ogg" />
+  </Section>
+  <Section Name="snd_GlassRubber">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0802206c9a66" />
+    <Key Name="name" Value="snd_GlassRubber" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_GlassRubber.ogg" />
+  </Section>
+  <Section Name="snd_WoodStone">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0803200c9a66" />
+    <Key Name="name" Value="snd_WoodStone" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_WoodStone.ogg" />
+  </Section>
+  <Section Name="snd_WoodMetal">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0803201c9a66" />
+    <Key Name="name" Value="snd_WoodMetal" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_WoodMetal.ogg" />
+  </Section>
+  <Section Name="snd_WoodGlass">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0803202c9a66" />
+    <Key Name="name" Value="snd_WoodGlass" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_WoodGlass.ogg" />
+  </Section>
+  <Section Name="snd_WoodWood">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0803203c9a66" />
+    <Key Name="name" Value="snd_WoodWood" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_WoodWood.ogg" />
+  </Section>
+  <Section Name="snd_WoodFlesh">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0803204c9a66" />
+    <Key Name="name" Value="snd_WoodFlesh" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_WoodFlesh.ogg" />
+  </Section>
+  <Section Name="snd_WoodPlastic">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0803205c9a66" />
+    <Key Name="name" Value="snd_WoodPlastic" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_WoodPlastic.ogg" />
+  </Section>
+  <Section Name="snd_WoodRubber">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0803206c9a66" />
+    <Key Name="name" Value="snd_WoodRubber" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_WoodRubber.ogg" />
+  </Section>
+  <Section Name="snd_FleshStone">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0804200c9a66" />
+    <Key Name="name" Value="snd_FleshStone" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_FleshStone.ogg" />
+  </Section>
+  <Section Name="snd_FleshMetal">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0804201c9a66" />
+    <Key Name="name" Value="snd_FleshMetal" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_FleshMetal.ogg" />
+  </Section>
+  <Section Name="snd_FleshGlass">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0804202c9a66" />
+    <Key Name="name" Value="snd_FleshGlass" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_FleshGlass.ogg" />
+  </Section>
+  <Section Name="snd_FleshWood">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0804203c9a66" />
+    <Key Name="name" Value="snd_FleshWood" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_FleshWood.ogg" />
+  </Section>
+  <Section Name="snd_FleshFlesh">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0804204c9a66" />
+    <Key Name="name" Value="snd_FleshFlesh" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_FleshFlesh.ogg" />
+  </Section>
+  <Section Name="snd_FleshPlastic">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0804205c9a66" />
+    <Key Name="name" Value="snd_FleshPlastic" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_FleshPlastic.ogg" />
+  </Section>
+  <Section Name="snd_FleshRubber">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0804206c9a66" />
+    <Key Name="name" Value="snd_FleshRubber" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_FleshRubber.ogg" />
+  </Section>
+  <Section Name="snd_PlasticStone">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0805200c9a66" />
+    <Key Name="name" Value="snd_PlasticStone" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_PlasticStone.ogg" />
+  </Section>
+  <Section Name="snd_PlasticMetal">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0805201c9a66" />
+    <Key Name="name" Value="snd_PlasticMetal" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_PlasticMetal.ogg" />
+  </Section>
+  <Section Name="snd_PlasticGlass">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0805202c9a66" />
+    <Key Name="name" Value="snd_PlasticGlass" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_PlasticGlass.ogg" />
+  </Section>
+  <Section Name="snd_PlasticWood">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0805203c9a66" />
+    <Key Name="name" Value="snd_PlasticWood" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_PlasticWood.ogg" />
+  </Section>
+  <Section Name="snd_PlasticFlesh">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0805204c9a66" />
+    <Key Name="name" Value="snd_PlasticFlesh" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_PlasticFlesh.ogg" />
+  </Section>
+  <Section Name="snd_PlasticPlastic">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0805205c9a66" />
+    <Key Name="name" Value="snd_PlasticPlastic" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_PlasticPlastic.ogg" />
+  </Section>
+  <Section Name="snd_PlasticRubber">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0805206c9a66" />
+    <Key Name="name" Value="snd_PlasticRubber" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_PlasticRubber.ogg" />
+  </Section>
+  <Section Name="snd_RubberStone">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0806200c9a66" />
+    <Key Name="name" Value="snd_RubberStone" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_RubberStone.ogg" />
+  </Section>
+  <Section Name="snd_RubberMetal">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0806201c9a66" />
+    <Key Name="name" Value="snd_RubberMetal" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_RubberMetal.ogg" />
+  </Section>
+  <Section Name="snd_RubberGlass">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0806202c9a66" />
+    <Key Name="name" Value="snd_RubberGlass" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_RubberGlass.ogg" />
+  </Section>
+  <Section Name="snd_RubberWood">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0806203c9a66" />
+    <Key Name="name" Value="snd_RubberWood" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_RubberWood.ogg" />
+  </Section>
+  <Section Name="snd_RubberFlesh">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0806204c9a66" />
+    <Key Name="name" Value="snd_RubberFlesh" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_RubberFlesh.ogg" />
+  </Section>
+  <Section Name="snd_RubberPlastic">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0806205c9a66" />
+    <Key Name="name" Value="snd_RubberPlastic" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_RubberPlastic.ogg" />
+  </Section>
+  <Section Name="snd_RubberRubber">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0806206c9a66" />
+    <Key Name="name" Value="snd_RubberRubber" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_RubberRubber.ogg" />
+  </Section>
+  <Section Name="snd_TerrainStone">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0807200c9a66" />
+    <Key Name="name" Value="snd_TerrainStone" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_TerrainStone.ogg" />
+  </Section>
+  <Section Name="snd_TerrainMetal">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0807200c9a66" />
+    <Key Name="name" Value="snd_TerrainMetal" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_TerrainMetal.ogg" />
+  </Section>
+  <Section Name="snd_TerrainGlass">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0807200c9a66" />
+    <Key Name="name" Value="snd_TerrainGlass" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_TerrainGlass.ogg" />
+  </Section>
+  <Section Name="snd_TerrainWood">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0807200c9a66" />
+    <Key Name="name" Value="snd_TerrainWood" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_TerrainWood.ogg" />
+  </Section>
+  <Section Name="snd_TerrainFlesh">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0807200c9a66" />
+    <Key Name="name" Value="snd_TerrainFlesh" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_TerrainFlesh.ogg" />
+  </Section>
+  <Section Name="snd_TerrainPlastic">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0807200c9a66" />
+    <Key Name="name" Value="snd_TerrainPlastic" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_TerrainPlastic.ogg" />
+  </Section>
+  <Section Name="snd_TerrainRubber">
+    <Key Name="assetID" Value="be7295c0-a158-11e1-b3dd-0807200c9a66" />
+    <Key Name="name" Value="snd_TerrainRubber" />
+    <Key Name="assetType" Value="1" />
+    <Key Name="fileName" Value="snd_TerrainRubber.ogg" />
+  </Section>
+</Nini>
diff --git a/bin/assets/CollisionSoundsAssetSet/attribution.txt b/bin/assets/CollisionSoundsAssetSet/attribution.txt
new file mode 100644
index 0000000..876419b
--- /dev/null
+++ b/bin/assets/CollisionSoundsAssetSet/attribution.txt
@@ -0,0 +1,8 @@
+thanvannispen - http://www.freesound.org/people/thanvannispen/sounds/30012/
+hoobtastic - http://www.freesound.org/people/hoobtastic/sounds/132627/
+kbnevel - http://www.freesound.org/people/kbnevel/sounds/119859/
+adcbicycle - http://www.freesound.org/people/adcbicycle/sounds/13856/
+adcbicycle - http://www.freesound.org/people/adcbicycle/sounds/13855/
+110110010 - http://www.freesound.org/people/110110010/sounds/66397/
+qubodup - http://www.freesound.org/people/qubodup/sounds/50941/
+vibe_crc - http://www.freesound.org/people/vibe_crc/sounds/59317/
\ No newline at end of file
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_FleshFlesh.ogg b/bin/assets/CollisionSoundsAssetSet/snd_FleshFlesh.ogg
new file mode 100644
index 0000000..5f3aeb7
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_FleshFlesh.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_FleshGlass.ogg b/bin/assets/CollisionSoundsAssetSet/snd_FleshGlass.ogg
new file mode 100644
index 0000000..3a322c6
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_FleshGlass.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_FleshMetal.ogg b/bin/assets/CollisionSoundsAssetSet/snd_FleshMetal.ogg
new file mode 100644
index 0000000..edcf17a
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_FleshMetal.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_FleshPlastic.ogg b/bin/assets/CollisionSoundsAssetSet/snd_FleshPlastic.ogg
new file mode 100644
index 0000000..acf53e5
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_FleshPlastic.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_FleshRubber.ogg b/bin/assets/CollisionSoundsAssetSet/snd_FleshRubber.ogg
new file mode 100644
index 0000000..6373610
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_FleshRubber.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_FleshStone.ogg b/bin/assets/CollisionSoundsAssetSet/snd_FleshStone.ogg
new file mode 100644
index 0000000..eccbbb8
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_FleshStone.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_FleshWood.ogg b/bin/assets/CollisionSoundsAssetSet/snd_FleshWood.ogg
new file mode 100644
index 0000000..6713380
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_FleshWood.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_GlassFlesh.ogg b/bin/assets/CollisionSoundsAssetSet/snd_GlassFlesh.ogg
new file mode 100644
index 0000000..6951d44
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_GlassFlesh.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_GlassGlass.ogg b/bin/assets/CollisionSoundsAssetSet/snd_GlassGlass.ogg
new file mode 100644
index 0000000..1806a55
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_GlassGlass.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_GlassMetal.ogg b/bin/assets/CollisionSoundsAssetSet/snd_GlassMetal.ogg
new file mode 100644
index 0000000..f147024
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_GlassMetal.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_GlassPlastic.ogg b/bin/assets/CollisionSoundsAssetSet/snd_GlassPlastic.ogg
new file mode 100644
index 0000000..204a4c6
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_GlassPlastic.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_GlassRubber.ogg b/bin/assets/CollisionSoundsAssetSet/snd_GlassRubber.ogg
new file mode 100644
index 0000000..243f185
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_GlassRubber.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_GlassStone.ogg b/bin/assets/CollisionSoundsAssetSet/snd_GlassStone.ogg
new file mode 100644
index 0000000..0852135
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_GlassStone.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_GlassWood.ogg b/bin/assets/CollisionSoundsAssetSet/snd_GlassWood.ogg
new file mode 100644
index 0000000..2c13690
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_GlassWood.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_MetalFlesh.ogg b/bin/assets/CollisionSoundsAssetSet/snd_MetalFlesh.ogg
new file mode 100644
index 0000000..c11d19f
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_MetalFlesh.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_MetalGlass.ogg b/bin/assets/CollisionSoundsAssetSet/snd_MetalGlass.ogg
new file mode 100644
index 0000000..36348e1
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_MetalGlass.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_MetalMetal.ogg b/bin/assets/CollisionSoundsAssetSet/snd_MetalMetal.ogg
new file mode 100644
index 0000000..957b3c2
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_MetalMetal.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_MetalPlastic.ogg b/bin/assets/CollisionSoundsAssetSet/snd_MetalPlastic.ogg
new file mode 100644
index 0000000..5674907
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_MetalPlastic.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_MetalRubber.ogg b/bin/assets/CollisionSoundsAssetSet/snd_MetalRubber.ogg
new file mode 100644
index 0000000..0f9ba2e
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_MetalRubber.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_MetalStone.ogg b/bin/assets/CollisionSoundsAssetSet/snd_MetalStone.ogg
new file mode 100644
index 0000000..dc489d8
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_MetalStone.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_MetalWood.ogg b/bin/assets/CollisionSoundsAssetSet/snd_MetalWood.ogg
new file mode 100644
index 0000000..de04317
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_MetalWood.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_PlasticFlesh.ogg b/bin/assets/CollisionSoundsAssetSet/snd_PlasticFlesh.ogg
new file mode 100644
index 0000000..a9d6983
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_PlasticFlesh.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_PlasticGlass.ogg b/bin/assets/CollisionSoundsAssetSet/snd_PlasticGlass.ogg
new file mode 100644
index 0000000..c7dcdf1
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_PlasticGlass.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_PlasticMetal.ogg b/bin/assets/CollisionSoundsAssetSet/snd_PlasticMetal.ogg
new file mode 100644
index 0000000..4dd270f
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_PlasticMetal.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_PlasticPlastic.ogg b/bin/assets/CollisionSoundsAssetSet/snd_PlasticPlastic.ogg
new file mode 100644
index 0000000..9994745
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_PlasticPlastic.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_PlasticRubber.ogg b/bin/assets/CollisionSoundsAssetSet/snd_PlasticRubber.ogg
new file mode 100644
index 0000000..e5c408f
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_PlasticRubber.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_PlasticStone.ogg b/bin/assets/CollisionSoundsAssetSet/snd_PlasticStone.ogg
new file mode 100644
index 0000000..9865c6e
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_PlasticStone.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_PlasticWood.ogg b/bin/assets/CollisionSoundsAssetSet/snd_PlasticWood.ogg
new file mode 100644
index 0000000..9f921b9
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_PlasticWood.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_RubberFlesh.ogg b/bin/assets/CollisionSoundsAssetSet/snd_RubberFlesh.ogg
new file mode 100644
index 0000000..b56f7dc
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_RubberFlesh.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_RubberGlass.ogg b/bin/assets/CollisionSoundsAssetSet/snd_RubberGlass.ogg
new file mode 100644
index 0000000..9f44fca
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_RubberGlass.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_RubberMetal.ogg b/bin/assets/CollisionSoundsAssetSet/snd_RubberMetal.ogg
new file mode 100644
index 0000000..9ff064a
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_RubberMetal.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_RubberPlastic.ogg b/bin/assets/CollisionSoundsAssetSet/snd_RubberPlastic.ogg
new file mode 100644
index 0000000..8e601b1
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_RubberPlastic.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_RubberRubber.ogg b/bin/assets/CollisionSoundsAssetSet/snd_RubberRubber.ogg
new file mode 100644
index 0000000..c84f8e5
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_RubberRubber.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_RubberStone.ogg b/bin/assets/CollisionSoundsAssetSet/snd_RubberStone.ogg
new file mode 100644
index 0000000..d398f6f
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_RubberStone.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_RubberWood.ogg b/bin/assets/CollisionSoundsAssetSet/snd_RubberWood.ogg
new file mode 100644
index 0000000..ebb24e3
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_RubberWood.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_StoneFlesh.ogg b/bin/assets/CollisionSoundsAssetSet/snd_StoneFlesh.ogg
new file mode 100644
index 0000000..90275ad
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_StoneFlesh.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_StoneGlass.ogg b/bin/assets/CollisionSoundsAssetSet/snd_StoneGlass.ogg
new file mode 100644
index 0000000..b2b33cf
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_StoneGlass.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_StoneMetal.ogg b/bin/assets/CollisionSoundsAssetSet/snd_StoneMetal.ogg
new file mode 100644
index 0000000..accdfdf
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_StoneMetal.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_StonePlastic.ogg b/bin/assets/CollisionSoundsAssetSet/snd_StonePlastic.ogg
new file mode 100644
index 0000000..15f93b6
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_StonePlastic.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_StoneRubber.ogg b/bin/assets/CollisionSoundsAssetSet/snd_StoneRubber.ogg
new file mode 100644
index 0000000..4b756ff
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_StoneRubber.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_StoneStone.ogg b/bin/assets/CollisionSoundsAssetSet/snd_StoneStone.ogg
new file mode 100644
index 0000000..88b8033
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_StoneStone.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_StoneWood.ogg b/bin/assets/CollisionSoundsAssetSet/snd_StoneWood.ogg
new file mode 100644
index 0000000..4a5b7f3
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_StoneWood.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_TerrainFlesh.ogg b/bin/assets/CollisionSoundsAssetSet/snd_TerrainFlesh.ogg
new file mode 100644
index 0000000..1d3038a
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_TerrainFlesh.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_TerrainGlass.ogg b/bin/assets/CollisionSoundsAssetSet/snd_TerrainGlass.ogg
new file mode 100644
index 0000000..637fa16
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_TerrainGlass.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_TerrainMetal.ogg b/bin/assets/CollisionSoundsAssetSet/snd_TerrainMetal.ogg
new file mode 100644
index 0000000..919c59b
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_TerrainMetal.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_TerrainPlastic.ogg b/bin/assets/CollisionSoundsAssetSet/snd_TerrainPlastic.ogg
new file mode 100644
index 0000000..23fa329
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_TerrainPlastic.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_TerrainRubber.ogg b/bin/assets/CollisionSoundsAssetSet/snd_TerrainRubber.ogg
new file mode 100644
index 0000000..c18d242
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_TerrainRubber.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_TerrainStone.ogg b/bin/assets/CollisionSoundsAssetSet/snd_TerrainStone.ogg
new file mode 100644
index 0000000..6bd9e09
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_TerrainStone.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_TerrainWood.ogg b/bin/assets/CollisionSoundsAssetSet/snd_TerrainWood.ogg
new file mode 100644
index 0000000..f405517
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_TerrainWood.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_WoodFlesh.ogg b/bin/assets/CollisionSoundsAssetSet/snd_WoodFlesh.ogg
new file mode 100644
index 0000000..02621c2
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_WoodFlesh.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_WoodGlass.ogg b/bin/assets/CollisionSoundsAssetSet/snd_WoodGlass.ogg
new file mode 100644
index 0000000..03b7fb5
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_WoodGlass.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_WoodMetal.ogg b/bin/assets/CollisionSoundsAssetSet/snd_WoodMetal.ogg
new file mode 100644
index 0000000..e26afae
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_WoodMetal.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_WoodPlastic.ogg b/bin/assets/CollisionSoundsAssetSet/snd_WoodPlastic.ogg
new file mode 100644
index 0000000..abe419b
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_WoodPlastic.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_WoodRubber.ogg b/bin/assets/CollisionSoundsAssetSet/snd_WoodRubber.ogg
new file mode 100644
index 0000000..30ccc32
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_WoodRubber.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_WoodStone.ogg b/bin/assets/CollisionSoundsAssetSet/snd_WoodStone.ogg
new file mode 100644
index 0000000..ad96818
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_WoodStone.ogg differ
diff --git a/bin/assets/CollisionSoundsAssetSet/snd_WoodWood.ogg b/bin/assets/CollisionSoundsAssetSet/snd_WoodWood.ogg
new file mode 100644
index 0000000..76ae52c
Binary files /dev/null and b/bin/assets/CollisionSoundsAssetSet/snd_WoodWood.ogg differ
-- 
cgit v1.1


From 095dbf0ece0aab1812d04695a17bff86720ab6ac Mon Sep 17 00:00:00 2001
From: Melanie
Date: Wed, 6 Jun 2012 20:35:00 +0200
Subject: Fix not sending TransferInfo when an asset is not found. This clogs
 up the sound pipeline in the viewer.

---
 .../Region/ClientStack/Linden/UDP/LLClientView.cs  | 33 +++++++++++++++++++---
 1 file changed, 29 insertions(+), 4 deletions(-)

diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 77dbca7..5a87958 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -2777,6 +2777,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP
             }
         }
 
+        public void SendAssetNotFound(AssetRequestToClient req)
+        {
+            TransferInfoPacket Transfer = new TransferInfoPacket();
+            Transfer.TransferInfo.ChannelType = 2;
+            Transfer.TransferInfo.Status = -2;
+            Transfer.TransferInfo.TargetType = 0;
+            Transfer.TransferInfo.Params = req.Params;
+            Transfer.TransferInfo.Size = 0;
+            Transfer.TransferInfo.TransferID = req.TransferRequestID;
+            Transfer.Header.Zerocoded = true;
+            OutPacket(Transfer, ThrottleOutPacketType.Asset);
+        }
+
         public void SendTexture(AssetBase TextureAsset)
         {
 
@@ -12178,14 +12191,27 @@ namespace OpenSim.Region.ClientStack.LindenUDP
         /// <param name="asset"></param>
         protected void AssetReceived(string id, Object sender, AssetBase asset)
         {
-            if (asset == null)
-                return;
-
             TransferRequestPacket transferRequest = (TransferRequestPacket)sender;
 
             UUID requestID = UUID.Zero;
             byte source = (byte)SourceType.Asset;
 
+            AssetRequestToClient req = new AssetRequestToClient();
+
+            if (asset == null)
+            {
+                req.AssetInf = null;
+                req.AssetRequestSource = source;
+                req.IsTextureRequest = false;
+                req.NumPackets = 0;
+                req.Params = transferRequest.TransferInfo.Params;
+                req.RequestAssetID = requestID;
+                req.TransferRequestID = transferRequest.TransferInfo.TransferID;
+
+                SendAssetNotFound(req);
+                return;
+            }
+
             if (transferRequest.TransferInfo.SourceType == (int)SourceType.Asset)
             {
                 requestID = new UUID(transferRequest.TransferInfo.Params, 0);
@@ -12202,7 +12228,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
                 return;
 
             // The asset is known to exist and is in our cache, so add it to the AssetRequests list
-            AssetRequestToClient req = new AssetRequestToClient();
             req.AssetInf = asset;
             req.AssetRequestSource = source;
             req.IsTextureRequest = false;
-- 
cgit v1.1


From 49423144350b6195a51931bc18a01be337f80f8b Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 7 Jun 2012 20:51:03 +0200
Subject: Implement playing of the real collision sounds, change scaling for
 avatar collisions to make them really soft because otherwise climbing stairs
 makes an unbearable amount of noise.

---
 OpenSim/Region/Framework/Scenes/CollisionSounds.cs | 190 +++++++--------------
 1 file changed, 57 insertions(+), 133 deletions(-)

diff --git a/OpenSim/Region/Framework/Scenes/CollisionSounds.cs b/OpenSim/Region/Framework/Scenes/CollisionSounds.cs
index d72cf41..a95e75a 100644
--- a/OpenSim/Region/Framework/Scenes/CollisionSounds.cs
+++ b/OpenSim/Region/Framework/Scenes/CollisionSounds.cs
@@ -27,9 +27,11 @@
 // Ubit 2012
 
 using System;
+using System.Reflection;
 using System.Collections.Generic;
 using OpenMetaverse;
 using OpenSim.Framework;
+using log4net;
 
 namespace OpenSim.Region.Framework.Scenes
 {
@@ -42,9 +44,11 @@ namespace OpenSim.Region.Framework.Scenes
 
     public static class CollisionSounds
     {
+        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+
         private const int MaxMaterials = 7;
         // part part
-/*
+
         private static UUID snd_StoneStone = new UUID("be7295c0-a158-11e1-b3dd-0800200c9a66");
         private static UUID snd_StoneMetal = new UUID("be7295c0-a158-11e1-b3dd-0800201c9a66");
         private static UUID snd_StoneGlass = new UUID("be7295c0-a158-11e1-b3dd-0800202c9a66");
@@ -53,7 +57,6 @@ namespace OpenSim.Region.Framework.Scenes
         private static UUID snd_StonePlastic = new UUID("be7295c0-a158-11e1-b3dd-0800205c9a66");
         private static UUID snd_StoneRubber = new UUID("be7295c0-a158-11e1-b3dd-0800206c9a66");
 
-        private static UUID snd_MetalStone = new UUID("be7295c0-a158-11e1-b3dd-0801200c9a66");
         private static UUID snd_MetalMetal = new UUID("be7295c0-a158-11e1-b3dd-0801201c9a66");
         private static UUID snd_MetalGlass = new UUID("be7295c0-a158-11e1-b3dd-0801202c9a66");
         private static UUID snd_MetalWood  = new UUID("be7295c0-a158-11e1-b3dd-0801203c9a66");
@@ -61,44 +64,24 @@ namespace OpenSim.Region.Framework.Scenes
         private static UUID snd_MetalPlastic = new UUID("be7295c0-a158-11e1-b3dd-0801205c9a66");
         private static UUID snd_MetalRubber = new UUID("be7295c0-a158-11e1-b3dd-0801206c9a66");
 
-        private static UUID snd_GlassStone = new UUID("be7295c0-a158-11e1-b3dd-0802200c9a66");
-        private static UUID snd_GlassMetal = new UUID("be7295c0-a158-11e1-b3dd-0802201c9a66");
         private static UUID snd_GlassGlass = new UUID("be7295c0-a158-11e1-b3dd-0802202c9a66");
         private static UUID snd_GlassWood = new UUID("be7295c0-a158-11e1-b3dd-0802203c9a66");
         private static UUID snd_GlassFlesh = new UUID("be7295c0-a158-11e1-b3dd-0802204c9a66");
         private static UUID snd_GlassPlastic = new UUID("be7295c0-a158-11e1-b3dd-0802205c9a66");
         private static UUID snd_GlassRubber = new UUID("be7295c0-a158-11e1-b3dd-0802206c9a66");
 
-        private static UUID snd_WoodStone = new UUID("be7295c0-a158-11e1-b3dd-0803200c9a66");
-        private static UUID snd_WoodMetal = new UUID("be7295c0-a158-11e1-b3dd-0803201c9a66");
-        private static UUID snd_WoodGlass = new UUID("be7295c0-a158-11e1-b3dd-0803202c9a66");
         private static UUID snd_WoodWood = new UUID("be7295c0-a158-11e1-b3dd-0803203c9a66");
         private static UUID snd_WoodFlesh = new UUID("be7295c0-a158-11e1-b3dd-0803204c9a66");
         private static UUID snd_WoodPlastic = new UUID("be7295c0-a158-11e1-b3dd-0803205c9a66");
         private static UUID snd_WoodRubber = new UUID("be7295c0-a158-11e1-b3dd-0803206c9a66");
 
-        private static UUID snd_FleshStone = new UUID("be7295c0-a158-11e1-b3dd-0804200c9a66");
-        private static UUID snd_FleshMetal = new UUID("be7295c0-a158-11e1-b3dd-0804201c9a66");
-        private static UUID snd_FleshGlass = new UUID("be7295c0-a158-11e1-b3dd-0804202c9a66");
-        private static UUID snd_FleshWood = new UUID("be7295c0-a158-11e1-b3dd-0804203c9a66");
         private static UUID snd_FleshFlesh = new UUID("be7295c0-a158-11e1-b3dd-0804204c9a66");
         private static UUID snd_FleshPlastic = new UUID("be7295c0-a158-11e1-b3dd-0804205c9a66");
         private static UUID snd_FleshRubber = new UUID("be7295c0-a158-11e1-b3dd-0804206c9a66");
 
-        private static UUID snd_PlasticStone = new UUID("be7295c0-a158-11e1-b3dd-0805200c9a66");
-        private static UUID snd_PlasticMetal = new UUID("be7295c0-a158-11e1-b3dd-0805201c9a66");
-        private static UUID snd_PlasticGlass = new UUID("be7295c0-a158-11e1-b3dd-0805202c9a66");
-        private static UUID snd_PlasticWood = new UUID("be7295c0-a158-11e1-b3dd-0805203c9a66");
-        private static UUID snd_PlasticFlesh = new UUID("be7295c0-a158-11e1-b3dd-0805204c9a66");
         private static UUID snd_PlasticPlastic = new UUID("be7295c0-a158-11e1-b3dd-0805205c9a66");
         private static UUID snd_PlasticRubber = new UUID("be7295c0-a158-11e1-b3dd-0805206c9a66");
 
-        private static UUID snd_RubberStone = new UUID("be7295c0-a158-11e1-b3dd-0806200c9a66");
-        private static UUID snd_RubberMetal = new UUID("be7295c0-a158-11e1-b3dd-0806201c9a66");
-        private static UUID snd_RubberGlass = new UUID("be7295c0-a158-11e1-b3dd-0806202c9a66");
-        private static UUID snd_RubberWood = new UUID("be7295c0-a158-11e1-b3dd-0806203c9a66");
-        private static UUID snd_RubberFlesh = new UUID("be7295c0-a158-11e1-b3dd-0806204c9a66");
-        private static UUID snd_RubberPlastic = new UUID("be7295c0-a158-11e1-b3dd-0806205c9a66");
         private static UUID snd_RubberRubber = new UUID("be7295c0-a158-11e1-b3dd-0806206c9a66");
 
         // terrain part
@@ -109,50 +92,6 @@ namespace OpenSim.Region.Framework.Scenes
         private static UUID snd_TerrainFlesh = new UUID("be7295c0-a158-11e1-b3dd-0807200c9a66");
         private static UUID snd_TerrainPlastic = new UUID("be7295c0-a158-11e1-b3dd-0807200c9a66");
         private static UUID snd_TerrainRubber = new UUID("be7295c0-a158-11e1-b3dd-0807200c9a66");
-*/
-        private static UUID snd_StoneStone = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_StoneMetal = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_StoneGlass = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_StoneWood = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_StoneFlesh = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_StonePlastic = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_StoneRubber = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-
-        private static UUID snd_MetalMetal = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_MetalGlass = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_MetalWood = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_MetalFlesh = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_MetalPlastic = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_MetalRubber = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-
-        private static UUID snd_GlassGlass = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_GlassWood = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_GlassFlesh = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_GlassPlastic = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_GlassRubber = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-
-        private static UUID snd_WoodWood = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_WoodFlesh = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_WoodPlastic = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_WoodRubber = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-
-        private static UUID snd_FleshFlesh = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_FleshPlastic = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_FleshRubber = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-
-        private static UUID snd_PlasticPlastic = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_PlasticRubber = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-
-        private static UUID snd_RubberRubber = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-
-        // terrain part
-        private static UUID snd_TerrainStone = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_TerrainMetal = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_TerrainGlass = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_TerrainWood = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_TerrainFlesh = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_TerrainPlastic = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
-        private static UUID snd_TerrainRubber = new UUID("c80260ba-41fd-8a46-768a-6bf236360e3a");
 
         public static UUID[] m_TerrainPart = {
             snd_TerrainStone,
@@ -163,18 +102,7 @@ namespace OpenSim.Region.Framework.Scenes
             snd_TerrainPlastic,
             snd_TerrainRubber
             };
-/*      
-        //full assimetric sounds
-        public static UUID[] m_PartPart = {
-            snd_StoneStone, snd_StoneMetal, snd_StoneGlass, snd_StoneWood, snd_StoneFlesh, snd_StonePlastic, snd_StoneRubber,
-            snd_MetalStone, snd_MetalMetal, snd_MetalGlass, snd_MetalWood, snd_MetalFlesh, snd_MetalPlastic, snd_MetalRubber,
-            snd_GlassStone, snd_GlassMetal, snd_GlassGlass, snd_GlassWood, snd_GlassFlesh, snd_GlassPlastic, snd_GlassRubber,
-            snd_WoodStone, snd_WoodMetal, snd_WoodGlass, snd_WoodWood, snd_WoodFlesh, snd_WoodPlastic, snd_WoodRubber,
-            snd_FleshStone, snd_FleshMetal, snd_FleshGlass, snd_FleshWood, snd_FleshFlesh, snd_FleshPlastic, snd_FleshRubber,
-            snd_PlasticStone, snd_PlasticMetal, snd_PlasticGlass, snd_PlasticWood, snd_PlasticFlesh, snd_PlasticPlastic, snd_PlasticRubber,
-            snd_RubberStone, snd_RubberMetal, snd_RubberGlass, snd_RubberWood, snd_RubberFlesh, snd_RubberPlastic, snd_RubberRubber
-            };
-*/
+
         // simetric sounds
         public static UUID[] m_PartPart = {
             snd_StoneStone, snd_StoneMetal, snd_StoneGlass, snd_StoneWood, snd_StoneFlesh, snd_StonePlastic, snd_StoneRubber,
@@ -235,19 +163,17 @@ namespace OpenSim.Region.Framework.Scenes
                         {
                             if (!HaveSound)
                             {
-// TODO: Import real collision sounds and uncomment this
-//                                volume = Math.Abs(colInfo.relativeVel);
-//                                if (volume < 0.2f)
-//                                    continue;
-//
-//                                volume *= volume * .0625f; // 4m/s == full volume
-//                                if (volume > 1.0f)
-//                                    volume = 1.0f;
-//
-//                                soundID = m_TerrainPart[thisMaterial];
+                                volume = Math.Abs(colInfo.relativeVel);
+                                if (volume < 0.2f)
+                                    continue;
+
+                                volume *= volume * .0625f; // 4m/s == full volume
+                                if (volume > 1.0f)
+                                    volume = 1.0f;
+
+                                soundID = m_TerrainPart[thisMaterial];
                             }
-                            else // Remove this else when uncommenting the above
-                                part.SendCollisionSound(soundID, volume, colInfo.position);
+                            part.SendCollisionSound(soundID, volume, colInfo.position);
                             doneownsound = true;
                         }
                         continue;
@@ -268,35 +194,31 @@ namespace OpenSim.Region.Framework.Scenes
                             if (volume == 0.0f)
                                 continue;
                         }
-// TODO: Import real collision sounds and uncomment this
-//                        else
-//                        {
-//                            volume = Math.Abs(colInfo.relativeVel);
-//                            if (volume < 0.2f)
-//                                continue;
-//
-//                            volume *= volume * .0625f; // 4m/s == full volume
-//                            if (volume > 1.0f)
-//                                volume = 1.0f;
-//
-//                            int otherMaterial = (int)otherPart.Material;
-//                            if (otherMaterial >= MaxMaterials)
-//                                otherMaterial = 3;
-//
-//                            soundID = m_PartPart[thisMatScaled + otherMaterial];
-//                        }
-                    }
-
-                    if (soundID != UUID.Zero) // Remove when sounds are there
-                    { // Remove when sounds are there
-                        if (doneownsound)
-                            otherPart.SendCollisionSound(soundID, volume, colInfo.position);
                         else
                         {
-                            part.SendCollisionSound(soundID, volume, colInfo.position);
-                            doneownsound = true;
+                            volume = Math.Abs(colInfo.relativeVel);
+                            if (volume < 0.2f)
+                                continue;
+
+                            volume *= volume * .0625f; // 4m/s == full volume
+                            if (volume > 1.0f)
+                                volume = 1.0f;
+
+                            int otherMaterial = (int)otherPart.Material;
+                            if (otherMaterial >= MaxMaterials)
+                                otherMaterial = 3;
+
+                            soundID = m_PartPart[thisMatScaled + otherMaterial];
                         }
-                    } // Remove when sounds are there
+                    }
+
+                    if (doneownsound)
+                        otherPart.SendCollisionSound(soundID, volume, colInfo.position);
+                    else
+                    {
+                        part.SendCollisionSound(soundID, volume, colInfo.position);
+                        doneownsound = true;
+                    }
                 }
             }
         }
@@ -341,23 +263,25 @@ namespace OpenSim.Region.Framework.Scenes
                         continue;
                     if (otherPart.CollisionSoundType > 0 && otherPart.CollisionSoundVolume > 0f)
                         otherPart.SendCollisionSound(otherPart.CollisionSound, otherPart.CollisionSoundVolume, colInfo.position);
-//TODO: uncomment below when sounds are uploaded
-//                    else
-//                    {
-//                        volume = Math.Abs(colInfo.relativeVel);
-//                        if (volume < 0.2f)
-//                            continue;
-//
-//                        volume *= volume * .0625f; // 4m/s == full volume
-//                        if (volume > 1.0f)
-//                            volume = 1.0f;
-//                        otherMaterial = (int)otherPart.Material;
-//                        if (otherMaterial >= MaxMaterials)
-//                            otherMaterial = 3;
-//
-//                        soundID = m_PartPart[thisMatScaled + otherMaterial];
-//                        otherPart.SendCollisionSound(soundID, volume, colInfo.position);
-//                    }
+                    else
+                    {
+                        volume = Math.Abs(colInfo.relativeVel);
+                        if (volume < 0.2f)
+                            continue;
+                        m_log.DebugFormat("Collision speed was {0}", volume);
+
+                        // Cap to 0.2 times volume because climbing stairs should not be noisy
+                        // Also changed scaling
+                        volume *= volume * .0125f; // 4m/s == volume 0.2
+                        if (volume > 0.2f)
+                            volume = 0.2f;
+                        otherMaterial = (int)otherPart.Material;
+                        if (otherMaterial >= MaxMaterials)
+                            otherMaterial = 3;
+
+                        soundID = m_PartPart[thisMatScaled + otherMaterial];
+                        otherPart.SendCollisionSound(soundID, volume, colInfo.position);
+                    }
                     continue;
                 }
 /*
-- 
cgit v1.1