* refactor: Remove largely duplicate code from SceneXmlLoader.CreatePrimFromXml2()
parent
255b87464a
commit
33d32355a1
|
@ -195,33 +195,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
SceneObjectGroup obj = new SceneObjectGroup(xmlData);
|
SceneObjectGroup obj = new SceneObjectGroup(xmlData);
|
||||||
|
|
||||||
LLVector3 receivedVelocity = obj.RootPart.Velocity;
|
|
||||||
//System.Console.WriteLine(obj.RootPart.Velocity.ToString());
|
|
||||||
scene.AddSceneObjectFromStorage(obj);
|
scene.AddSceneObjectFromStorage(obj);
|
||||||
|
|
||||||
SceneObjectPart rootPart = obj.GetChildPart(obj.UUID);
|
obj.ApplyPhysics(scene.m_physicalPrim);
|
||||||
bool UsePhysics = (((rootPart.GetEffectiveObjectFlags() & (uint) LLObject.ObjectFlags.Physics) > 0) &&
|
|
||||||
scene.m_physicalPrim);
|
|
||||||
if ((rootPart.GetEffectiveObjectFlags() & (uint) LLObject.ObjectFlags.Phantom) == 0)
|
|
||||||
{
|
|
||||||
rootPart.PhysActor = scene.PhysicsScene.AddPrimShape(
|
|
||||||
rootPart.Name,
|
|
||||||
rootPart.Shape,
|
|
||||||
new PhysicsVector(rootPart.AbsolutePosition.X, rootPart.AbsolutePosition.Y,
|
|
||||||
rootPart.AbsolutePosition.Z),
|
|
||||||
new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
|
|
||||||
new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
|
|
||||||
rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics);
|
|
||||||
|
|
||||||
// to quote from SceneObjectPart: Basic
|
|
||||||
// Physics returns null.. joy joy joy.
|
|
||||||
if (rootPart.PhysActor != null)
|
|
||||||
{
|
|
||||||
rootPart.PhysActor.LocalID = rootPart.LocalId;
|
|
||||||
rootPart.DoPhysicsPropertyUpdate(UsePhysics, true);
|
|
||||||
}
|
|
||||||
rootPart.Velocity = receivedVelocity;
|
|
||||||
}
|
|
||||||
|
|
||||||
obj.ScheduleGroupForFullUpdate();
|
obj.ScheduleGroupForFullUpdate();
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,7 +79,12 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
private int m_timePhase = 24;
|
private int m_timePhase = 24;
|
||||||
|
|
||||||
private readonly Mutex updateLock;
|
private readonly Mutex updateLock;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Are we applying physics to any of the prims in this scene?
|
||||||
|
/// </summary>
|
||||||
public bool m_physicalPrim;
|
public bool m_physicalPrim;
|
||||||
|
|
||||||
public bool m_seeIntoRegionFromNeighbor;
|
public bool m_seeIntoRegionFromNeighbor;
|
||||||
public int MaxUndoCount = 5;
|
public int MaxUndoCount = 5;
|
||||||
private int m_RestartTimerCounter;
|
private int m_RestartTimerCounter;
|
||||||
|
|
|
@ -1052,6 +1052,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_rootPart.ScheduleFullUpdate();
|
m_rootPart.ScheduleFullUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Apply physics to this group
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="m_physicalPrim"></param>
|
||||||
public void ApplyPhysics(bool m_physicalPrim)
|
public void ApplyPhysics(bool m_physicalPrim)
|
||||||
{
|
{
|
||||||
lock (m_parts)
|
lock (m_parts)
|
||||||
|
|
|
@ -494,8 +494,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
return m_velocity;
|
return m_velocity;
|
||||||
}
|
}
|
||||||
set {
|
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
m_velocity = value;
|
m_velocity = value;
|
||||||
if (PhysActor != null)
|
if (PhysActor != null)
|
||||||
{
|
{
|
||||||
|
@ -505,7 +506,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor);
|
m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -913,9 +913,13 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
return newobject;
|
return newobject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Apply physics to this part.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="rootObjectFlags"></param>
|
||||||
|
/// <param name="m_physicalPrim"></param>
|
||||||
public void ApplyPhysics(uint rootObjectFlags, bool m_physicalPrim)
|
public void ApplyPhysics(uint rootObjectFlags, bool m_physicalPrim)
|
||||||
{
|
{
|
||||||
|
|
||||||
bool isPhysical = (((rootObjectFlags & (uint) LLObject.ObjectFlags.Physics) != 0) && m_physicalPrim);
|
bool isPhysical = (((rootObjectFlags & (uint) LLObject.ObjectFlags.Physics) != 0) && m_physicalPrim);
|
||||||
bool isPhantom = ((rootObjectFlags & (uint) LLObject.ObjectFlags.Phantom) != 0);
|
bool isPhantom = ((rootObjectFlags & (uint) LLObject.ObjectFlags.Phantom) != 0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue