avoid siting a avatar at 0,0,0

LSLKeyTest
UbitUmarov 2016-09-12 18:19:01 +01:00
parent 34dce801b2
commit 38fb28bd68
1 changed files with 33 additions and 7 deletions

View File

@ -3335,11 +3335,16 @@ namespace OpenSim.Region.Framework.Scenes
Velocity = Vector3.Zero; Velocity = Vector3.Zero;
m_AngularVelocity = Vector3.Zero; m_AngularVelocity = Vector3.Zero;
m_requestedSitTargetID = 0;
part.AddSittingAvatar(this);
ParentPart = part;
ParentID = part.LocalId;
Vector3 cameraAtOffset = part.GetCameraAtOffset(); Vector3 cameraAtOffset = part.GetCameraAtOffset();
Vector3 cameraEyeOffset = part.GetCameraEyeOffset(); Vector3 cameraEyeOffset = part.GetCameraEyeOffset();
bool forceMouselook = part.GetForceMouselook(); bool forceMouselook = part.GetForceMouselook();
if (!part.IsRoot) if (!part.IsRoot)
{ {
Orientation = part.RotationOffset * Orientation; Orientation = part.RotationOffset * Orientation;
@ -3365,13 +3370,7 @@ namespace OpenSim.Region.Framework.Scenes
ControllingClient.SendSitResponse( ControllingClient.SendSitResponse(
part.ParentGroup.UUID, offset, Orientation, true, cameraAtOffset, cameraEyeOffset, forceMouselook); part.ParentGroup.UUID, offset, Orientation, true, cameraAtOffset, cameraEyeOffset, forceMouselook);
m_requestedSitTargetID = 0;
part.AddSittingAvatar(this);
ParentPart = part;
ParentID = part.LocalId;
SendAvatarDataToAllAgents(); SendAvatarDataToAllAgents();
@ -5560,6 +5559,13 @@ namespace OpenSim.Region.Framework.Scenes
public void HandleForceReleaseControls(IClientAPI remoteClient, UUID agentID) public void HandleForceReleaseControls(IClientAPI remoteClient, UUID agentID)
{ {
foreach (ScriptControllers c in scriptedcontrols.Values)
{
SceneObjectGroup sog = m_scene.GetSceneObjectGroup(c.objectID);
if(sog != null && !sog.IsDeleted && sog.RootPart.PhysActor != null)
sog.RootPart.PhysActor.OnPhysicsRequestingCameraData -= physActor_OnPhysicsRequestingCameraData;
}
IgnoredControls = ScriptControlled.CONTROL_ZERO; IgnoredControls = ScriptControlled.CONTROL_ZERO;
lock (scriptedcontrols) lock (scriptedcontrols)
{ {
@ -5568,6 +5574,26 @@ namespace OpenSim.Region.Framework.Scenes
ControllingClient.SendTakeControls(int.MaxValue, false, false); ControllingClient.SendTakeControls(int.MaxValue, false, false);
} }
public void HandleRevokePermissions(UUID objectID, uint permissions )
{
// still skeleton code
if((permissions & (16 | 0x8000 )) == 0) //PERMISSION_TRIGGER_ANIMATION | PERMISSION_OVERRIDE_ANIMATIONS
return;
if(objectID == m_scene.RegionInfo.RegionID) // for all objects
{
}
else
{
SceneObjectPart part = m_scene.GetSceneObjectPart(objectID);
if(part != null)
{
}
}
}
public void ClearControls() public void ClearControls()
{ {
IgnoredControls = ScriptControlled.CONTROL_ZERO; IgnoredControls = ScriptControlled.CONTROL_ZERO;