Merge branch 'ubitwork' of ssh://3dhosting.de/var/git/careminster into ubitwork
commit
7ba34f29ef
|
@ -130,7 +130,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if(Colliders.Count == 0 || part == null)
|
if(Colliders.Count == 0 || part == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((part.Flags & PrimFlags.Physics) == 0) // let only active prims trigger sounds
|
if (part.VolumeDetectActive || (part.Flags & PrimFlags.Physics) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (part.ParentGroup == null)
|
if (part.ParentGroup == null)
|
||||||
|
@ -142,6 +142,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
UUID soundID;
|
UUID soundID;
|
||||||
int otherMaterial;
|
int otherMaterial;
|
||||||
|
|
||||||
|
Vector3 position = part.AbsolutePosition;
|
||||||
|
|
||||||
|
if (part.CollisionSound != UUID.Zero)
|
||||||
|
{
|
||||||
|
if (part.CollisionSoundVolume > 0.0f)
|
||||||
|
part.SendCollisionSound(part.CollisionSound, part.CollisionSoundVolume, position);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int thisMaterial = (int) part.Material;
|
int thisMaterial = (int) part.Material;
|
||||||
if (thisMaterial >= MaxMaterials)
|
if (thisMaterial >= MaxMaterials)
|
||||||
thisMaterial = 3;
|
thisMaterial = 3;
|
||||||
|
@ -158,7 +167,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (!doneownsound)
|
if (!doneownsound)
|
||||||
{
|
{
|
||||||
soundID = m_TerrainPart[thisMaterial];
|
soundID = m_TerrainPart[thisMaterial];
|
||||||
part.SendCollisionSound(soundID, 1.0);
|
part.SendCollisionSound(soundID, 1.0, position);
|
||||||
doneownsound = true;
|
doneownsound = true;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
@ -170,7 +179,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (otherPart.CollisionSound == part.invalidCollisionSoundUUID || otherPart.VolumeDetectActive)
|
if (otherPart.CollisionSound == part.invalidCollisionSoundUUID || otherPart.VolumeDetectActive)
|
||||||
continue;
|
continue;
|
||||||
if (otherPart.CollisionSound != UUID.Zero)
|
if (otherPart.CollisionSound != UUID.Zero)
|
||||||
otherPart.SendCollisionSound(otherPart.CollisionSound, otherPart.CollisionSoundVolume);
|
otherPart.SendCollisionSound(otherPart.CollisionSound, otherPart.CollisionSoundVolume, position);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
otherMaterial = (int)otherPart.Material;
|
otherMaterial = (int)otherPart.Material;
|
||||||
|
@ -179,10 +188,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
index = thisMatScaled + otherMaterial;
|
index = thisMatScaled + otherMaterial;
|
||||||
soundID = m_PartPart[index];
|
soundID = m_PartPart[index];
|
||||||
if (doneownsound)
|
if (doneownsound)
|
||||||
otherPart.SendCollisionSound(soundID, 1.0);
|
otherPart.SendCollisionSound(soundID, 1.0, position);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
part.SendCollisionSound(soundID, 1.0);
|
part.SendCollisionSound(soundID, 1.0, position);
|
||||||
doneownsound = true;
|
doneownsound = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -217,6 +226,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
int index;
|
int index;
|
||||||
// bool doneownsound = false;
|
// bool doneownsound = false;
|
||||||
|
|
||||||
|
Vector3 position = av.AbsolutePosition;
|
||||||
|
|
||||||
foreach (uint Id in Colliders)
|
foreach (uint Id in Colliders)
|
||||||
{
|
{
|
||||||
if (Id == 0)
|
if (Id == 0)
|
||||||
|
@ -230,7 +241,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (otherPart.CollisionSound == otherPart.invalidCollisionSoundUUID)
|
if (otherPart.CollisionSound == otherPart.invalidCollisionSoundUUID)
|
||||||
continue;
|
continue;
|
||||||
if (otherPart.CollisionSound != UUID.Zero)
|
if (otherPart.CollisionSound != UUID.Zero)
|
||||||
otherPart.SendCollisionSound(otherPart.CollisionSound, otherPart.CollisionSoundVolume);
|
otherPart.SendCollisionSound(otherPart.CollisionSound, otherPart.CollisionSoundVolume, position);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
otherMaterial = (int)otherPart.Material;
|
otherMaterial = (int)otherPart.Material;
|
||||||
|
@ -238,7 +249,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
otherMaterial = 3;
|
otherMaterial = 3;
|
||||||
index = thisMatScaled + otherMaterial;
|
index = thisMatScaled + otherMaterial;
|
||||||
soundID = m_PartPart[index];
|
soundID = m_PartPart[index];
|
||||||
otherPart.SendCollisionSound(soundID, 1.0);
|
otherPart.SendCollisionSound(soundID, 1.0, position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -2632,7 +2632,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
// calculate things that started colliding this time
|
// calculate things that started colliding this time
|
||||||
// and build up list of colliders this time
|
// and build up list of colliders this time
|
||||||
foreach (uint localid in collissionswith.Keys)
|
foreach (uint localid in collissionswith.Keys)
|
||||||
|
@ -2657,22 +2656,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
foreach (uint localID in endedColliders)
|
foreach (uint localID in endedColliders)
|
||||||
m_lastColliders.Remove(localID);
|
m_lastColliders.Remove(localID);
|
||||||
}
|
}
|
||||||
|
|
||||||
// play the sound.
|
// play the sound.
|
||||||
|
|
||||||
bool IsNotVolumeDtc = !VolumeDetectActive;
|
bool IsNotVolumeDtc = !VolumeDetectActive;
|
||||||
|
|
||||||
if (IsNotVolumeDtc && startedColliders.Count > 0 && CollisionSound != invalidCollisionSoundUUID)
|
if (IsNotVolumeDtc && startedColliders.Count > 0 && CollisionSound != invalidCollisionSoundUUID)
|
||||||
{
|
|
||||||
if (CollisionSound != UUID.Zero)
|
|
||||||
{
|
|
||||||
if (CollisionSoundVolume > 0.0f)
|
|
||||||
SendCollisionSound(CollisionSound, CollisionSoundVolume);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CollisionSounds.PartCollisionSound(this, startedColliders);
|
CollisionSounds.PartCollisionSound(this, startedColliders);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SendCollisionEvent(scriptEvents.collision_start, startedColliders, ParentGroup.Scene.EventManager.TriggerScriptCollidingStart);
|
SendCollisionEvent(scriptEvents.collision_start, startedColliders, ParentGroup.Scene.EventManager.TriggerScriptCollidingStart);
|
||||||
if (IsNotVolumeDtc)
|
if (IsNotVolumeDtc)
|
||||||
|
@ -3206,12 +3196,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendCollisionSound(UUID soundID, double volume)
|
public void SendCollisionSound(UUID soundID, double volume, Vector3 position)
|
||||||
{
|
{
|
||||||
if (soundID == UUID.Zero)
|
if (soundID == UUID.Zero)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
ISoundModule soundModule = ParentGroup.Scene.RequestModuleInterface<ISoundModule>();
|
ISoundModule soundModule = ParentGroup.Scene.RequestModuleInterface<ISoundModule>();
|
||||||
if (soundModule == null)
|
if (soundModule == null)
|
||||||
return;
|
return;
|
||||||
|
@ -3230,7 +3219,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
UUID ownerID = OwnerID;
|
UUID ownerID = OwnerID;
|
||||||
UUID objectID = ParentGroup.RootPart.UUID;
|
UUID objectID = ParentGroup.RootPart.UUID;
|
||||||
UUID parentID = ParentGroup.UUID;
|
UUID parentID = ParentGroup.UUID;
|
||||||
Vector3 position = AbsolutePosition; // region local
|
|
||||||
ulong regionHandle = ParentGroup.Scene.RegionInfo.RegionHandle;
|
ulong regionHandle = ParentGroup.Scene.RegionInfo.RegionHandle;
|
||||||
|
|
||||||
soundModule.TriggerSound(soundID, ownerID, objectID, parentID, volume, position, regionHandle, 0 );
|
soundModule.TriggerSound(soundID, ownerID, objectID, parentID, volume, position, regionHandle, 0 );
|
||||||
|
|
Loading…
Reference in New Issue