From 38fb28bd68ead376554feea9d7b92edc52e9a65e Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 12 Sep 2016 18:19:01 +0100 Subject: [PATCH] avoid siting a avatar at 0,0,0 --- .../Region/Framework/Scenes/ScenePresence.cs | 40 +++++++++++++++---- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index cb7422ba14..bb6e89b3ba 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -3335,11 +3335,16 @@ namespace OpenSim.Region.Framework.Scenes Velocity = Vector3.Zero; m_AngularVelocity = Vector3.Zero; + m_requestedSitTargetID = 0; + part.AddSittingAvatar(this); + + ParentPart = part; + ParentID = part.LocalId; + Vector3 cameraAtOffset = part.GetCameraAtOffset(); Vector3 cameraEyeOffset = part.GetCameraEyeOffset(); bool forceMouselook = part.GetForceMouselook(); - if (!part.IsRoot) { Orientation = part.RotationOffset * Orientation; @@ -3365,13 +3370,7 @@ namespace OpenSim.Region.Framework.Scenes ControllingClient.SendSitResponse( part.ParentGroup.UUID, offset, Orientation, true, cameraAtOffset, cameraEyeOffset, forceMouselook); - - m_requestedSitTargetID = 0; - part.AddSittingAvatar(this); - - ParentPart = part; - ParentID = part.LocalId; SendAvatarDataToAllAgents(); @@ -5560,6 +5559,13 @@ namespace OpenSim.Region.Framework.Scenes 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; lock (scriptedcontrols) { @@ -5568,6 +5574,26 @@ namespace OpenSim.Region.Framework.Scenes 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() { IgnoredControls = ScriptControlled.CONTROL_ZERO;