set object select on demand, not when it is created
parent
b440a9534d
commit
775420c46a
|
@ -221,7 +221,7 @@ namespace OpenSim.Framework
|
|||
public delegate void AddNewPrim(
|
||||
UUID ownerID, UUID groupID, Vector3 RayEnd, Quaternion rot, PrimitiveBaseShape shape, byte bypassRaycast, Vector3 RayStart,
|
||||
UUID RayTargetID,
|
||||
byte RayEndIsIntersection);
|
||||
byte RayEndIsIntersection, uint addflags);
|
||||
|
||||
public delegate void AgentDataUpdate(IClientAPI remoteClient, UUID itemID, UUID ownerID);
|
||||
|
||||
|
|
|
@ -4525,7 +4525,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
|
||||
// no AppearanceData
|
||||
data[pos++] = 0;
|
||||
// no AppearanceHover
|
||||
// AppearanceHover vector 3
|
||||
data[pos++] = 1;
|
||||
Utils.FloatToBytesSafepos(0, data, pos); pos += 4;
|
||||
Utils.FloatToBytesSafepos(0, data, pos); pos += 4;
|
||||
|
@ -9310,8 +9310,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
if (addPacket.AgentData.SessionID != SessionId || addPacket.AgentData.AgentID != AgentId)
|
||||
return;
|
||||
|
||||
ObjectAddPacket.ObjectDataBlock datablk = addPacket.ObjectData;
|
||||
PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket);
|
||||
OnAddPrim?.Invoke(AgentId, addPacket.AgentData.GroupID, addPacket.ObjectData.RayEnd, addPacket.ObjectData.Rotation, shape, addPacket.ObjectData.BypassRaycast, addPacket.ObjectData.RayStart, addPacket.ObjectData.RayTargetID, addPacket.ObjectData.RayEndIsIntersection);
|
||||
OnAddPrim?.Invoke(AgentId, addPacket.AgentData.GroupID, datablk.RayEnd,
|
||||
datablk.Rotation, shape,
|
||||
datablk.BypassRaycast, datablk.RayStart, datablk.RayTargetID, datablk.RayEndIsIntersection,
|
||||
datablk.AddFlags);
|
||||
}
|
||||
|
||||
private void HandleObjectShape(Packet Pack)
|
||||
|
|
|
@ -351,6 +351,5 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
AddByte((byte)(len));
|
||||
AddBytes(data, len);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -2597,8 +2597,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
/// <param name="vel">The velocity of the rezzed object.</param>
|
||||
/// <param name="param"></param>
|
||||
/// <returns>The SceneObjectGroup(s) rezzed, or null if rez was unsuccessful</returns>
|
||||
public virtual List<SceneObjectGroup> RezObject(
|
||||
SceneObjectPart sourcePart, TaskInventoryItem item, Vector3 pos, Quaternion? rot, Vector3 vel, int param, bool atRoot)
|
||||
public virtual List<SceneObjectGroup> RezObject(SceneObjectPart sourcePart, TaskInventoryItem item,
|
||||
Vector3 pos, Quaternion? rot, Vector3 vel, int param, bool atRoot, bool rezSelected = false)
|
||||
{
|
||||
if (null == item)
|
||||
return null;
|
||||
|
@ -2710,6 +2710,12 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
AddNewSceneObject(group, true, curpos, crot, vel);
|
||||
}
|
||||
|
||||
if(rezSelected)
|
||||
{
|
||||
group.IsSelected = true;
|
||||
group.RootPart.CreateSelected = true;
|
||||
}
|
||||
|
||||
// We can only call this after adding the scene object, since the scene object references the scene
|
||||
// to find out if scripts should be activated at all.
|
||||
group.InvalidateEffectivePerms();
|
||||
|
|
|
@ -261,7 +261,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
return;
|
||||
|
||||
bool oldgprSelect = part.ParentGroup.IsSelected;
|
||||
bool oldSelect = part.IsSelected;
|
||||
part.IsSelected = false;
|
||||
|
||||
if (oldgprSelect != part.ParentGroup.IsSelected)
|
||||
|
@ -271,7 +270,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
|
||||
// restore targetOmega
|
||||
if (oldSelect && part.AngularVelocity != Vector3.Zero)
|
||||
if (part.AngularVelocity != Vector3.Zero)
|
||||
part.ScheduleTerseUpdate();
|
||||
}
|
||||
|
||||
|
|
|
@ -2512,7 +2512,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
/// <param name="RayEndIsIntersection"></param>
|
||||
public virtual void AddNewPrim(UUID ownerID, UUID groupID, Vector3 RayEnd, Quaternion rot, PrimitiveBaseShape shape,
|
||||
byte bypassRaycast, Vector3 RayStart, UUID RayTargetID,
|
||||
byte RayEndIsIntersection)
|
||||
byte RayEndIsIntersection, uint addFlags)
|
||||
{
|
||||
Vector3 pos = GetNewRezLocation(RayStart, RayEnd, RayTargetID, rot, bypassRaycast, RayEndIsIntersection, true, new Vector3(0.5f, 0.5f, 0.5f), false);
|
||||
|
||||
|
@ -2521,7 +2521,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
// rez ON the ground, not IN the ground
|
||||
// pos.Z += 0.25F; The rez point should now be correct so that its not in the ground
|
||||
|
||||
AddNewPrim(ownerID, groupID, pos, rot, shape);
|
||||
AddNewPrim(ownerID, groupID, pos, rot, shape, addFlags);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2531,8 +2531,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
public virtual SceneObjectGroup AddNewPrim(
|
||||
UUID ownerID, UUID groupID, Vector3 pos, Quaternion rot, PrimitiveBaseShape shape)
|
||||
public virtual SceneObjectGroup AddNewPrim(UUID ownerID, UUID groupID,
|
||||
Vector3 pos, Quaternion rot, PrimitiveBaseShape shape, uint addFlags = 0)
|
||||
{
|
||||
//m_log.DebugFormat(
|
||||
// "[SCENE]: Scene.AddNewPrim() pcode {0} called for {1} in {2}", shape.PCode, ownerID, RegionInfo.RegionName);
|
||||
|
@ -2567,6 +2567,12 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if (UserManagementModule != null)
|
||||
sceneObject.RootPart.CreatorIdentification = UserManagementModule.GetUserUUI(ownerID);
|
||||
|
||||
if((addFlags & (uint)PrimFlags.CreateSelected) != 0)
|
||||
{
|
||||
sceneObject.IsSelected = true;
|
||||
sceneObject.RootPart.CreateSelected = true;
|
||||
}
|
||||
|
||||
sceneObject.InvalidateDeepEffectivePerms();;
|
||||
sceneObject.ScheduleGroupForFullAnimUpdate();
|
||||
|
||||
|
|
|
@ -1938,7 +1938,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
// occur on link to invoke this elsewhere (such as object selection)
|
||||
if (childGroups.Count > 0)
|
||||
{
|
||||
parentGroup.RootPart.CreateSelected = true;
|
||||
//parentGroup.RootPart.CreateSelected = true;
|
||||
parentGroup.TriggerScriptChangedEvent(Changed.LINK);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3250,7 +3250,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
linkPart.SetParent(this);
|
||||
|
||||
linkPart.CreateSelected = true;
|
||||
//linkPart.CreateSelected = true;
|
||||
|
||||
linkPart.UpdatePrimFlags(grpusephys, grptemporary, (IsPhantom || (linkPart.Flags & PrimFlags.Phantom) != 0), linkPart.VolumeDetectActive || RootPart.VolumeDetectActive, true);
|
||||
|
||||
|
|
|
@ -444,7 +444,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
Acceleration = Vector3.Zero;
|
||||
APIDActive = false;
|
||||
Flags = 0;
|
||||
CreateSelected = true;
|
||||
CreateSelected = false;
|
||||
TrimPermissions();
|
||||
AggregateInnerPerms();
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ namespace OpenSim.Region.DataSnapshot.Providers
|
|||
|
||||
client.OnAddPrim += delegate (UUID ownerID, UUID groupID, Vector3 RayEnd, Quaternion rot,
|
||||
PrimitiveBaseShape shape, byte bypassRaycast, Vector3 RayStart, UUID RayTargetID,
|
||||
byte RayEndIsIntersection) { this.Stale = true; };
|
||||
byte RayEndIsIntersection, uint addFlags) { this.Stale = true; };
|
||||
client.OnLinkObjects += delegate (IClientAPI remoteClient, uint parent, List<uint> children)
|
||||
{ this.Stale = true; };
|
||||
client.OnDelinkObjects += delegate(List<uint> primIds, IClientAPI clientApi) { this.Stale = true; };
|
||||
|
|
|
@ -220,8 +220,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
|||
scene.AuthenticateHandler.AddNewCircuit(npcAvatar.CircuitCode, acd);
|
||||
scene.AddNewAgent(npcAvatar, PresenceType.Npc);
|
||||
|
||||
ScenePresence sp;
|
||||
if (scene.TryGetScenePresence(npcAvatar.AgentId, out sp))
|
||||
if (scene.TryGetScenePresence(npcAvatar.AgentId, out ScenePresence sp))
|
||||
{
|
||||
npcAvatar.Born = born;
|
||||
npcAvatar.ActiveGroupId = groupID;
|
||||
|
|
|
@ -4506,7 +4506,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
|
||||
parentPrim.TriggerScriptChangedEvent(Changed.LINK);
|
||||
parentPrim.RootPart.CreateSelected = true;
|
||||
parentPrim.RootPart.CreateSelected = false;
|
||||
parentPrim.HasGroupChanged = true;
|
||||
parentPrim.ScheduleGroupForFullUpdate();
|
||||
|
||||
|
|
Loading…
Reference in New Issue