experimental function. Results still too volatile to be usefull

LSLKeyTest
UbitUmarov 2016-08-27 19:25:47 +01:00
parent abadad47d3
commit 78fa544f0d
4 changed files with 33 additions and 2 deletions

View File

@ -5408,5 +5408,24 @@ SendFullUpdateToClient(remoteClient, Position) ignores position parameter
Acceleration = Vector3.Zero; Acceleration = Vector3.Zero;
APIDActive = false; APIDActive = false;
} }
// handle osVolumeDetect
public void ScriptSetVolumeDetect(bool makeVolumeDetect)
{
if(_parentID == 0)
{
// if root prim do it via SOG
ParentGroup.ScriptSetVolumeDetect(makeVolumeDetect);
return;
}
bool wasUsingPhysics = ((Flags & PrimFlags.Physics) != 0);
bool wasTemporary = ((Flags & PrimFlags.TemporaryOnRez) != 0);
bool wasPhantom = ((Flags & PrimFlags.Phantom) != 0);
if(PhysActor != null)
PhysActor.Building = true;
UpdatePrimFlags(wasUsingPhysics,wasTemporary,wasPhantom,makeVolumeDetect,false);
}
} }
} }

View File

@ -4279,5 +4279,17 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
else else
m_host.CollisionSoundType = -1; m_host.CollisionSoundType = -1;
} }
// still not very usefull, detector is lost on rez, restarts, etc
public void osVolumeDetect(int detect)
{
m_host.AddScriptLPS(1);
if (m_host.ParentGroup == null || m_host.ParentGroup.IsDeleted || m_host.ParentGroup.IsAttachment)
return;
m_host.ScriptSetVolumeDetect(detect != 0);
}
} }
} }

View File

@ -477,5 +477,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
LSL_String osRequestURL(LSL_List options); LSL_String osRequestURL(LSL_List options);
LSL_String osRequestSecureURL(LSL_List options); LSL_String osRequestSecureURL(LSL_List options);
void osCollisionSound(string impact_sound, double impact_volume); void osCollisionSound(string impact_sound, double impact_volume);
void osVolumeDetect(int detect);
} }
} }

View File

@ -1094,11 +1094,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
{ {
m_OSSL_Functions.osCollisionSound(impact_sound, impact_volume); m_OSSL_Functions.osCollisionSound(impact_sound, impact_volume);
} }
/*
public void osVolumeDetect(int detect) public void osVolumeDetect(int detect)
{ {
m_OSSL_Functions.osVolumeDetect(detect); m_OSSL_Functions.osVolumeDetect(detect);
} }
*/
} }
} }