Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
commit
57cf89f4a9
|
@ -75,7 +75,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.MapImage
|
||||||
public void Close() { }
|
public void Close() { }
|
||||||
public void PostInitialise() { }
|
public void PostInitialise() { }
|
||||||
|
|
||||||
|
|
||||||
///<summary>
|
///<summary>
|
||||||
///
|
///
|
||||||
///</summary>
|
///</summary>
|
||||||
|
@ -206,6 +205,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.MapImage
|
||||||
|
|
||||||
using (Image mapTile = tileGenerator.CreateMapTile())
|
using (Image mapTile = tileGenerator.CreateMapTile())
|
||||||
{
|
{
|
||||||
|
// XXX: The MapImageModule will return a null if the user has chosen not to create map tiles and there
|
||||||
|
// is no static map tile.
|
||||||
|
if (mapTile == null)
|
||||||
|
return;
|
||||||
|
|
||||||
using (MemoryStream stream = new MemoryStream())
|
using (MemoryStream stream = new MemoryStream())
|
||||||
{
|
{
|
||||||
mapTile.Save(stream, ImageFormat.Jpeg);
|
mapTile.Save(stream, ImageFormat.Jpeg);
|
||||||
|
|
|
@ -113,7 +113,6 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap
|
||||||
//t = System.Environment.TickCount - t;
|
//t = System.Environment.TickCount - t;
|
||||||
//m_log.InfoFormat("[MAPTILE] generation of 10 maptiles needed {0} ms", t);
|
//m_log.InfoFormat("[MAPTILE] generation of 10 maptiles needed {0} ms", t);
|
||||||
|
|
||||||
|
|
||||||
if (drawPrimVolume)
|
if (drawPrimVolume)
|
||||||
{
|
{
|
||||||
DrawObjectVolume(m_scene, mapbmp);
|
DrawObjectVolume(m_scene, mapbmp);
|
||||||
|
@ -121,7 +120,7 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mapbmp = fetchTexture(m_scene.RegionInfo.RegionSettings.TerrainImageID);
|
mapbmp = FetchTexture(m_scene.RegionInfo.RegionSettings.TerrainImageID);
|
||||||
}
|
}
|
||||||
return mapbmp;
|
return mapbmp;
|
||||||
}
|
}
|
||||||
|
@ -232,11 +231,19 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
private Bitmap fetchTexture(UUID id)
|
private Bitmap FetchTexture(UUID id)
|
||||||
{
|
{
|
||||||
AssetBase asset = m_scene.AssetService.Get(id.ToString());
|
AssetBase asset = m_scene.AssetService.Get(id.ToString());
|
||||||
m_log.DebugFormat("[MAPTILE]: Fetched static texture {0}, found: {1}", id, asset != null);
|
|
||||||
if (asset == null) return null;
|
if (asset != null)
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[MAPTILE]: Static map image texture {0} found for {1}", id, m_scene.Name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_log.WarnFormat("[MAPTILE]: Static map image texture {0} not found for {1}", id, m_scene.Name);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
ManagedImage managedImage;
|
ManagedImage managedImage;
|
||||||
Image image;
|
Image image;
|
||||||
|
|
|
@ -2342,7 +2342,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
ParentPart = m_scene.GetSceneObjectPart(m_requestedSitTargetID);
|
ParentPart = m_scene.GetSceneObjectPart(m_requestedSitTargetID);
|
||||||
ParentID = m_requestedSitTargetID;
|
ParentID = m_requestedSitTargetID;
|
||||||
|
m_AngularVelocity = Vector3.Zero;
|
||||||
Velocity = Vector3.Zero;
|
Velocity = Vector3.Zero;
|
||||||
RemoveFromPhysicalScene();
|
RemoveFromPhysicalScene();
|
||||||
|
|
||||||
|
@ -2358,7 +2358,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
public void HandleAgentSitOnGround()
|
public void HandleAgentSitOnGround()
|
||||||
{
|
{
|
||||||
// m_updateCount = 0; // Kill animation update burst so that the SIT_G.. will stick.
|
// m_updateCount = 0; // Kill animation update burst so that the SIT_G.. will stick..
|
||||||
|
m_AngularVelocity = Vector3.Zero;
|
||||||
Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED");
|
Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED");
|
||||||
SitGround = true;
|
SitGround = true;
|
||||||
RemoveFromPhysicalScene();
|
RemoveFromPhysicalScene();
|
||||||
|
|
|
@ -219,30 +219,31 @@ public sealed class BSLinksetCompound : BSLinkset
|
||||||
{
|
{
|
||||||
// Gather the child info. It might not be there if the linkset is in transition.
|
// Gather the child info. It might not be there if the linkset is in transition.
|
||||||
BSLinksetCompoundInfo lsi = updated.LinksetInfo as BSLinksetCompoundInfo;
|
BSLinksetCompoundInfo lsi = updated.LinksetInfo as BSLinksetCompoundInfo;
|
||||||
|
if (lsi != null)
|
||||||
|
{
|
||||||
|
// Since the child moved or rotationed, it needs a new relative position within the linkset
|
||||||
|
BSLinksetCompoundInfo newLsi = new BSLinksetCompoundInfo(lsi.Index, LinksetRoot, updated, LinksetRoot.PositionDisplacement);
|
||||||
|
updated.LinksetInfo = newLsi;
|
||||||
|
|
||||||
// The linksetInfo will need to be rebuilt either here or when the linkset is rebuilt
|
// Find the physical instance of the child
|
||||||
if (LinksetRoot.PhysShape.HasPhysicalShape && lsi != null)
|
if (LinksetRoot.PhysShape.HasPhysicalShape && PhysicsScene.PE.IsCompound(LinksetRoot.PhysShape))
|
||||||
{
|
|
||||||
if (PhysicsScene.PE.IsCompound(LinksetRoot.PhysShape))
|
|
||||||
{
|
|
||||||
int numLinksetChildren = PhysicsScene.PE.GetNumberOfCompoundChildren(LinksetRoot.PhysShape);
|
|
||||||
if (lsi.Index < numLinksetChildren)
|
|
||||||
{
|
{
|
||||||
// It is possible that the linkset is still under construction and the child is not yet
|
// It is possible that the linkset is still under construction and the child is not yet
|
||||||
// inserted into the compound shape. A rebuild of the linkset in a pre-step action will
|
// inserted into the compound shape. A rebuild of the linkset in a pre-step action will
|
||||||
// build the whole thing with the new position or rotation.
|
// build the whole thing with the new position or rotation.
|
||||||
// This must be checked for because Bullet references the child array but does no validity
|
// The index must be checked because Bullet references the child array but does no validity
|
||||||
// checking of the child index passed.
|
// checking of the child index passed.
|
||||||
|
int numLinksetChildren = PhysicsScene.PE.GetNumberOfCompoundChildren(LinksetRoot.PhysShape);
|
||||||
|
if (lsi.Index < numLinksetChildren)
|
||||||
|
{
|
||||||
BulletShape linksetChildShape = PhysicsScene.PE.GetChildShapeFromCompoundShapeIndex(LinksetRoot.PhysShape, lsi.Index);
|
BulletShape linksetChildShape = PhysicsScene.PE.GetChildShapeFromCompoundShapeIndex(LinksetRoot.PhysShape, lsi.Index);
|
||||||
if (linksetChildShape.HasPhysicalShape)
|
if (linksetChildShape.HasPhysicalShape)
|
||||||
{
|
{
|
||||||
// Compute the offset from the center-of-gravity
|
// Found the child shape within the compound shape
|
||||||
BSLinksetCompoundInfo newLsi = new BSLinksetCompoundInfo(lsi.Index, LinksetRoot, updated, LinksetRoot.PositionDisplacement);
|
|
||||||
PhysicsScene.PE.UpdateChildTransform(LinksetRoot.PhysShape, lsi.Index,
|
PhysicsScene.PE.UpdateChildTransform(LinksetRoot.PhysShape, lsi.Index,
|
||||||
newLsi.OffsetFromCenterOfMass,
|
newLsi.OffsetFromCenterOfMass,
|
||||||
newLsi.OffsetRot,
|
newLsi.OffsetRot,
|
||||||
true /* shouldRecalculateLocalAabb */);
|
true /* shouldRecalculateLocalAabb */);
|
||||||
updated.LinksetInfo = newLsi;
|
|
||||||
updatedChild = true;
|
updatedChild = true;
|
||||||
DetailLog("{0},BSLinksetCompound.UpdateProperties,changeChildPosRot,whichUpdated={1},newLsi={2}",
|
DetailLog("{0},BSLinksetCompound.UpdateProperties,changeChildPosRot,whichUpdated={1},newLsi={2}",
|
||||||
updated.LocalID, whichUpdated, newLsi);
|
updated.LocalID, whichUpdated, newLsi);
|
||||||
|
@ -262,19 +263,20 @@ public sealed class BSLinksetCompound : BSLinkset
|
||||||
}
|
}
|
||||||
else // DEBUG DEBUG
|
else // DEBUG DEBUG
|
||||||
{ // DEBUG DEBUG
|
{ // DEBUG DEBUG
|
||||||
DetailLog("{0},BSLinksetCompound.UpdateProperties,couldNotUpdateChild,notCompound", updated.LocalID);
|
DetailLog("{0},BSLinksetCompound.UpdateProperties,couldNotUpdateChild,noBodyOrNotCompound", updated.LocalID);
|
||||||
} // DEBUG DEBUG
|
} // DEBUG DEBUG
|
||||||
}
|
}
|
||||||
else // DEBUG DEBUG
|
else // DEBUG DEBUG
|
||||||
{ // DEBUG DEBUG
|
{ // DEBUG DEBUG
|
||||||
DetailLog("{0},BSLinksetCompound.UpdateProperties,couldNotUpdateChild,rootPhysShape={1},lsi={2}",
|
DetailLog("{0},BSLinksetCompound.UpdateProperties,couldNotUpdateChild,noLinkSetInfo,rootPhysShape={1}",
|
||||||
updated.LocalID, LinksetRoot.PhysShape, lsi == null ? "NULL" : lsi.ToString());
|
updated.LocalID, LinksetRoot.PhysShape);
|
||||||
} // DEBUG DEBUG
|
} // DEBUG DEBUG
|
||||||
|
|
||||||
if (!updatedChild)
|
if (!updatedChild)
|
||||||
{
|
{
|
||||||
// If couldn't do the individual child, the linkset needs a rebuild to incorporate the new child info.
|
// If couldn't do the individual child, the linkset needs a rebuild to incorporate the new child info.
|
||||||
// Note that there are several ways through this code that will not update the child that can
|
// Note: there are several ways through this code that will not update the child if
|
||||||
// occur if the linkset is being rebuilt. In this case, scheduling a rebuild is a NOOP since
|
// the linkset is being rebuilt. In this case, scheduling a rebuild is a NOOP since
|
||||||
// there will already be a rebuild scheduled.
|
// there will already be a rebuild scheduled.
|
||||||
DetailLog("{0},BSLinksetCompound.UpdateProperties,couldNotUpdateChild.schedulingRebuild,whichUpdated={1}",
|
DetailLog("{0},BSLinksetCompound.UpdateProperties,couldNotUpdateChild.schedulingRebuild,whichUpdated={1}",
|
||||||
updated.LocalID, whichUpdated);
|
updated.LocalID, whichUpdated);
|
||||||
|
@ -300,7 +302,8 @@ public sealed class BSLinksetCompound : BSLinkset
|
||||||
{
|
{
|
||||||
// Because it is a convenient time, recompute child world position and rotation based on
|
// Because it is a convenient time, recompute child world position and rotation based on
|
||||||
// its position in the linkset.
|
// its position in the linkset.
|
||||||
RecomputeChildWorldPosition(child, true);
|
RecomputeChildWorldPosition(child, true /* inTaintTime */);
|
||||||
|
child.LinksetInfo = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cannot schedule a refresh/rebuild here because this routine is called when
|
// Cannot schedule a refresh/rebuild here because this routine is called when
|
||||||
|
@ -315,6 +318,14 @@ public sealed class BSLinksetCompound : BSLinkset
|
||||||
// prim. The child prim's location must be recomputed based on the location of the root shape.
|
// prim. The child prim's location must be recomputed based on the location of the root shape.
|
||||||
private void RecomputeChildWorldPosition(BSPhysObject child, bool inTaintTime)
|
private void RecomputeChildWorldPosition(BSPhysObject child, bool inTaintTime)
|
||||||
{
|
{
|
||||||
|
// For the moment (20130201), disable this computation (converting the child physical addr back to
|
||||||
|
// a region address) until we have a good handle on center-of-mass offsets and what the physics
|
||||||
|
// engine moving a child actually means.
|
||||||
|
// The simulator keeps track of where children should be as the linkset moves. Setting
|
||||||
|
// the pos/rot here does not effect that knowledge as there is no good way for the
|
||||||
|
// physics engine to send the simulator an update for a child.
|
||||||
|
|
||||||
|
/*
|
||||||
BSLinksetCompoundInfo lci = child.LinksetInfo as BSLinksetCompoundInfo;
|
BSLinksetCompoundInfo lci = child.LinksetInfo as BSLinksetCompoundInfo;
|
||||||
if (lci != null)
|
if (lci != null)
|
||||||
{
|
{
|
||||||
|
@ -343,6 +354,7 @@ public sealed class BSLinksetCompound : BSLinkset
|
||||||
// LogHeader, child.LocalID);
|
// LogHeader, child.LocalID);
|
||||||
DetailLog("{0},BSLinksetCompound.recomputeChildWorldPosition,noRelativePositonInfo", child.LocalID);
|
DetailLog("{0},BSLinksetCompound.recomputeChildWorldPosition,noRelativePositonInfo", child.LocalID);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
// ================================================================
|
// ================================================================
|
||||||
|
@ -376,6 +388,7 @@ public sealed class BSLinksetCompound : BSLinkset
|
||||||
|
|
||||||
// Cause the child's body to be rebuilt and thus restored to normal operation
|
// Cause the child's body to be rebuilt and thus restored to normal operation
|
||||||
RecomputeChildWorldPosition(child, false);
|
RecomputeChildWorldPosition(child, false);
|
||||||
|
child.LinksetInfo = null;
|
||||||
child.ForceBodyShapeRebuild(false);
|
child.ForceBodyShapeRebuild(false);
|
||||||
|
|
||||||
if (!HasAnyChildren)
|
if (!HasAnyChildren)
|
||||||
|
@ -397,7 +410,7 @@ public sealed class BSLinksetCompound : BSLinkset
|
||||||
// Constraint linksets are rebuilt every time.
|
// Constraint linksets are rebuilt every time.
|
||||||
// Note that this works for rebuilding just the root after a linkset is taken apart.
|
// Note that this works for rebuilding just the root after a linkset is taken apart.
|
||||||
// Called at taint time!!
|
// Called at taint time!!
|
||||||
private bool disableCOM = true; // disable until we get this debugged
|
private bool disableCOM = true; // DEBUG DEBUG: disable until we get this debugged
|
||||||
private void RecomputeLinksetCompound()
|
private void RecomputeLinksetCompound()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
|
@ -127,6 +127,7 @@ Physical and phantom will drop through the terrain
|
||||||
|
|
||||||
LINKSETS
|
LINKSETS
|
||||||
======================================================
|
======================================================
|
||||||
|
Child prims do not report collisions
|
||||||
Editing a child of a linkset causes the child to go phantom
|
Editing a child of a linkset causes the child to go phantom
|
||||||
Move a child prim once when it is physical and can never move it again without it going phantom
|
Move a child prim once when it is physical and can never move it again without it going phantom
|
||||||
Offset the center of the linkset to be the geometric center of all the prims
|
Offset the center of the linkset to be the geometric center of all the prims
|
||||||
|
|
|
@ -60,7 +60,7 @@ namespace OpenSim.Region.Physics.Manager
|
||||||
ClosestHit = 0x8000,
|
ClosestHit = 0x8000,
|
||||||
|
|
||||||
// some combinations
|
// some combinations
|
||||||
LSLPhanton = phantom | volumedtc,
|
LSLPhantom = phantom | volumedtc,
|
||||||
PrimsNonPhantom = nonphysical | physical,
|
PrimsNonPhantom = nonphysical | physical,
|
||||||
PrimsNonPhantomAgents = nonphysical | physical | agent,
|
PrimsNonPhantomAgents = nonphysical | physical | agent,
|
||||||
|
|
||||||
|
|
|
@ -11381,7 +11381,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
if (checkNonPhysical)
|
if (checkNonPhysical)
|
||||||
rayfilter |= RayFilterFlags.nonphysical;
|
rayfilter |= RayFilterFlags.nonphysical;
|
||||||
if (detectPhantom)
|
if (detectPhantom)
|
||||||
rayfilter |= RayFilterFlags.LSLPhanton;
|
rayfilter |= RayFilterFlags.LSLPhantom;
|
||||||
|
|
||||||
Vector3 direction = dir * ( 1/dist);
|
Vector3 direction = dir * ( 1/dist);
|
||||||
|
|
||||||
|
|
|
@ -269,9 +269,10 @@
|
||||||
; DefaultScriptEngine = "XEngine"
|
; DefaultScriptEngine = "XEngine"
|
||||||
|
|
||||||
;# {GenerateMaptiles} {} {Generate map tiles?} {true false} true
|
;# {GenerateMaptiles} {} {Generate map tiles?} {true false} true
|
||||||
;; Map tile options. You can choose to generate no map tiles at all,
|
;; Map tile options. You can choose to generate normal maptiles or nominate an uploaded texture to
|
||||||
;; generate normal maptiles, or nominate an uploaded texture to
|
;; be the map tile using the MaptileStaticUUID parameter in this section or for individual regions in
|
||||||
;; be the map tile
|
;; the regions config file(s). If you do not want to upload map tiles at all, then you will need
|
||||||
|
;; to disable the MapImageServiceModule entirely.
|
||||||
; GenerateMaptiles = true
|
; GenerateMaptiles = true
|
||||||
|
|
||||||
;# {MaptileRefresh} {GenerateMaptiles} {Maptile refresh period?} {} 0
|
;# {MaptileRefresh} {GenerateMaptiles} {Maptile refresh period?} {} 0
|
||||||
|
|
|
@ -1,6 +1,20 @@
|
||||||
; This file contains defaults for various settings in OpenSimulator. These can be overriden
|
; This file contains defaults for various settings in OpenSimulator. These can be overriden
|
||||||
; by changing the same setting in OpenSim.ini (once OpenSim.ini.example has been copied to OpenSim.ini).
|
; by changing the same setting in OpenSim.ini (once OpenSim.ini.example has been copied to OpenSim.ini).
|
||||||
|
|
||||||
|
[XMLRPC]
|
||||||
|
;# {XmlRpcRouterModule} {} {Module used to route incoming llRemoteData calls} {XmlRpcRouterModule XmlRpcGridRouterModule} XmlRpcRouterModule
|
||||||
|
;; If enabled and set to XmlRpcRouterModule, this will post an event,
|
||||||
|
;; "xmlrpc_uri(string)" to the script concurrently with the first
|
||||||
|
;; remote_data event. This will contain the fully qualified URI an
|
||||||
|
;; external site needs to use to send XMLRPC requests to that script
|
||||||
|
;;
|
||||||
|
;; If enabled and set to XmlRpcGridRouterModule, newly created channels
|
||||||
|
;; will be registered with an external service via a configured uri
|
||||||
|
XmlRpcRouterModule = "XmlRpcRouterModule"
|
||||||
|
|
||||||
|
;# {XmlRpcPort} {} {Port for incoming llRemoteData xmlrpc calls} {} 20800
|
||||||
|
XmlRpcPort = 20800
|
||||||
|
|
||||||
|
|
||||||
[Startup]
|
[Startup]
|
||||||
; Console prompt
|
; Console prompt
|
||||||
|
|
Loading…
Reference in New Issue