Merge branch 'master' into careminster
commit
6b5f3b49e7
|
@ -89,6 +89,7 @@ what it is today.
|
||||||
* Fernando Oliveira
|
* Fernando Oliveira
|
||||||
* Fly-Man
|
* Fly-Man
|
||||||
* Flyte Xevious
|
* Flyte Xevious
|
||||||
|
* Garmin Kawaguichi
|
||||||
* Imaze Rhiano
|
* Imaze Rhiano
|
||||||
* Intimidated
|
* Intimidated
|
||||||
* Jeremy Bongio (IBM)
|
* Jeremy Bongio (IBM)
|
||||||
|
|
|
@ -1199,8 +1199,6 @@ namespace OpenSim.Region.CoreModules.World.Terrain
|
||||||
saveToTileCommand.AddArgument("file height", "The height of the file in tiles", "Integer");
|
saveToTileCommand.AddArgument("file height", "The height of the file in tiles", "Integer");
|
||||||
saveToTileCommand.AddArgument("minimum X tile", "The X region coordinate of the first section on the file",
|
saveToTileCommand.AddArgument("minimum X tile", "The X region coordinate of the first section on the file",
|
||||||
"Integer");
|
"Integer");
|
||||||
saveToTileCommand.AddArgument("minimum Y tile", "The Y region coordinate of the first section on the file",
|
|
||||||
"Integer");
|
|
||||||
saveToTileCommand.AddArgument("minimum Y tile", "The Y region coordinate of the first tile on the file\n"
|
saveToTileCommand.AddArgument("minimum Y tile", "The Y region coordinate of the first tile on the file\n"
|
||||||
+ "= Example =\n"
|
+ "= Example =\n"
|
||||||
+ "To save a PNG file for a set of map tiles 2 regions wide and 3 regions high from map co-ordinate (9910,10234)\n"
|
+ "To save a PNG file for a set of map tiles 2 regions wide and 3 regions high from map co-ordinate (9910,10234)\n"
|
||||||
|
|
|
@ -426,6 +426,8 @@ public class BSCharacter : PhysicsActor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Called by the scene when a collision with this object is reported
|
||||||
|
CollisionEventUpdate collisionCollection = null;
|
||||||
public void Collide(uint collidingWith, ActorTypes type, Vector3 contactPoint, Vector3 contactNormal, float pentrationDepth)
|
public void Collide(uint collidingWith, ActorTypes type, Vector3 contactPoint, Vector3 contactNormal, float pentrationDepth)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("{0}: Collide: ms={1}, id={2}, with={3}", LogHeader, _subscribedEventsMs, LocalID, collidingWith);
|
// m_log.DebugFormat("{0}: Collide: ms={1}, id={2}, with={3}", LogHeader, _subscribedEventsMs, LocalID, collidingWith);
|
||||||
|
@ -443,10 +445,24 @@ public class BSCharacter : PhysicsActor
|
||||||
if (nowTime < (_lastCollisionTime + _subscribedEventsMs)) return;
|
if (nowTime < (_lastCollisionTime + _subscribedEventsMs)) return;
|
||||||
_lastCollisionTime = nowTime;
|
_lastCollisionTime = nowTime;
|
||||||
|
|
||||||
Dictionary<uint, ContactPoint> contactPoints = new Dictionary<uint, ContactPoint>();
|
if (collisionCollection == null)
|
||||||
contactPoints.Add(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth));
|
collisionCollection = new CollisionEventUpdate();
|
||||||
CollisionEventUpdate args = new CollisionEventUpdate(contactPoints);
|
collisionCollection.AddCollider(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth));
|
||||||
base.SendCollisionUpdate(args);
|
}
|
||||||
|
|
||||||
|
public void SendCollisions()
|
||||||
|
{
|
||||||
|
// if (collisionCollection != null)
|
||||||
|
// {
|
||||||
|
// base.SendCollisionUpdate(collisionCollection);
|
||||||
|
// collisionCollection = null;
|
||||||
|
// }
|
||||||
|
// Kludge to make a collision call even if there are no collisions.
|
||||||
|
// This causes the avatar animation to get updated.
|
||||||
|
if (collisionCollection == null)
|
||||||
|
collisionCollection = new CollisionEventUpdate();
|
||||||
|
base.SendCollisionUpdate(collisionCollection);
|
||||||
|
collisionCollection = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1326,6 +1326,7 @@ public sealed class BSPrim : PhysicsActor
|
||||||
}
|
}
|
||||||
|
|
||||||
// I've collided with something
|
// I've collided with something
|
||||||
|
CollisionEventUpdate collisionCollection = null;
|
||||||
public void Collide(uint collidingWith, ActorTypes type, OMV.Vector3 contactPoint, OMV.Vector3 contactNormal, float pentrationDepth)
|
public void Collide(uint collidingWith, ActorTypes type, OMV.Vector3 contactPoint, OMV.Vector3 contactNormal, float pentrationDepth)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("{0}: Collide: ms={1}, id={2}, with={3}", LogHeader, _subscribedEventsMs, LocalID, collidingWith);
|
// m_log.DebugFormat("{0}: Collide: ms={1}, id={2}, with={3}", LogHeader, _subscribedEventsMs, LocalID, collidingWith);
|
||||||
|
@ -1343,11 +1344,18 @@ public sealed class BSPrim : PhysicsActor
|
||||||
if (nowTime < (_lastCollisionTime + _subscribedEventsMs)) return;
|
if (nowTime < (_lastCollisionTime + _subscribedEventsMs)) return;
|
||||||
_lastCollisionTime = nowTime;
|
_lastCollisionTime = nowTime;
|
||||||
|
|
||||||
// create the event for the collision
|
if (collisionCollection == null)
|
||||||
Dictionary<uint, ContactPoint> contactPoints = new Dictionary<uint, ContactPoint>();
|
collisionCollection = new CollisionEventUpdate();
|
||||||
contactPoints.Add(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth));
|
collisionCollection.AddCollider(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth));
|
||||||
CollisionEventUpdate args = new CollisionEventUpdate(contactPoints);
|
}
|
||||||
base.SendCollisionUpdate(args);
|
|
||||||
|
public void SendCollisions()
|
||||||
|
{
|
||||||
|
if (collisionCollection != null)
|
||||||
|
{
|
||||||
|
base.SendCollisionUpdate(collisionCollection);
|
||||||
|
collisionCollection = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,6 +78,8 @@ public class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
|
|
||||||
private Dictionary<uint, BSCharacter> m_avatars = new Dictionary<uint, BSCharacter>();
|
private Dictionary<uint, BSCharacter> m_avatars = new Dictionary<uint, BSCharacter>();
|
||||||
private Dictionary<uint, BSPrim> m_prims = new Dictionary<uint, BSPrim>();
|
private Dictionary<uint, BSPrim> m_prims = new Dictionary<uint, BSPrim>();
|
||||||
|
private HashSet<BSCharacter> m_avatarsWithCollisions = new HashSet<BSCharacter>();
|
||||||
|
private HashSet<BSPrim> m_primsWithCollisions = new HashSet<BSPrim>();
|
||||||
private List<BSPrim> m_vehicles = new List<BSPrim>();
|
private List<BSPrim> m_vehicles = new List<BSPrim>();
|
||||||
private float[] m_heightMap;
|
private float[] m_heightMap;
|
||||||
private float m_waterLevel;
|
private float m_waterLevel;
|
||||||
|
@ -435,6 +437,17 @@ public class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The SendCollision's batch up the collisions on the objects. Now push the collisions into the simulator.
|
||||||
|
foreach (BSPrim bsp in m_primsWithCollisions)
|
||||||
|
bsp.SendCollisions();
|
||||||
|
m_primsWithCollisions.Clear();
|
||||||
|
// foreach (BSCharacter bsc in m_avatarsWithCollisions)
|
||||||
|
// bsc.SendCollisions();
|
||||||
|
// This is a kludge to get avatar movement updated. ODE sends collisions even if there isn't any
|
||||||
|
foreach (KeyValuePair<uint, BSCharacter> kvp in m_avatars)
|
||||||
|
kvp.Value.SendCollisions();
|
||||||
|
m_avatarsWithCollisions.Clear();
|
||||||
|
|
||||||
// If any of the objects had updated properties, tell the object it has been changed by the physics engine
|
// If any of the objects had updated properties, tell the object it has been changed by the physics engine
|
||||||
if (updatedEntityCount > 0)
|
if (updatedEntityCount > 0)
|
||||||
{
|
{
|
||||||
|
@ -485,11 +498,13 @@ public class BSScene : PhysicsScene, IPhysicsParameters
|
||||||
BSPrim prim;
|
BSPrim prim;
|
||||||
if (m_prims.TryGetValue(localID, out prim)) {
|
if (m_prims.TryGetValue(localID, out prim)) {
|
||||||
prim.Collide(collidingWith, type, collidePoint, collideNormal, penitration);
|
prim.Collide(collidingWith, type, collidePoint, collideNormal, penitration);
|
||||||
|
m_primsWithCollisions.Add(prim);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
BSCharacter actor;
|
BSCharacter actor;
|
||||||
if (m_avatars.TryGetValue(localID, out actor)) {
|
if (m_avatars.TryGetValue(localID, out actor)) {
|
||||||
actor.Collide(collidingWith, type, collidePoint, collideNormal, penitration);
|
actor.Collide(collidingWith, type, collidePoint, collideNormal, penitration);
|
||||||
|
m_avatarsWithCollisions.Add(actor);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -59,7 +59,7 @@ namespace OpenSim.Server.Handlers.Asset
|
||||||
if (assetService == String.Empty)
|
if (assetService == String.Empty)
|
||||||
throw new Exception("No LocalServiceModule in config file");
|
throw new Exception("No LocalServiceModule in config file");
|
||||||
|
|
||||||
Object[] args = new Object[] { config };
|
Object[] args = new Object[] { config, m_ConfigName };
|
||||||
m_AssetService =
|
m_AssetService =
|
||||||
ServerUtils.LoadPlugin<IAssetService>(assetService, args);
|
ServerUtils.LoadPlugin<IAssetService>(assetService, args);
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ namespace OpenSim.Server.Handlers.Asset
|
||||||
if (inventoryService == String.Empty)
|
if (inventoryService == String.Empty)
|
||||||
throw new Exception("No InventoryService in config file");
|
throw new Exception("No InventoryService in config file");
|
||||||
|
|
||||||
Object[] args = new Object[] { config };
|
Object[] args = new Object[] { config, m_ConfigName };
|
||||||
m_InventoryService =
|
m_InventoryService =
|
||||||
ServerUtils.LoadPlugin<IInventoryService>(inventoryService, args);
|
ServerUtils.LoadPlugin<IInventoryService>(inventoryService, args);
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,12 @@ namespace OpenSim.Services.AssetService
|
||||||
|
|
||||||
protected static AssetService m_RootInstance;
|
protected static AssetService m_RootInstance;
|
||||||
|
|
||||||
public AssetService(IConfigSource config) : base(config)
|
public AssetService(IConfigSource config)
|
||||||
|
: this(config, "AssetService")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public AssetService(IConfigSource config, string configName) : base(config, configName)
|
||||||
{
|
{
|
||||||
if (m_RootInstance == null)
|
if (m_RootInstance == null)
|
||||||
{
|
{
|
||||||
|
@ -54,9 +59,9 @@ namespace OpenSim.Services.AssetService
|
||||||
|
|
||||||
if (m_AssetLoader != null)
|
if (m_AssetLoader != null)
|
||||||
{
|
{
|
||||||
IConfig assetConfig = config.Configs["AssetService"];
|
IConfig assetConfig = config.Configs[m_ConfigName];
|
||||||
if (assetConfig == null)
|
if (assetConfig == null)
|
||||||
throw new Exception("No AssetService configuration");
|
throw new Exception("No " + m_ConfigName + " configuration");
|
||||||
|
|
||||||
string loaderArgs = assetConfig.GetString("AssetLoaderArgs",
|
string loaderArgs = assetConfig.GetString("AssetLoaderArgs",
|
||||||
String.Empty);
|
String.Empty);
|
||||||
|
|
|
@ -39,16 +39,25 @@ namespace OpenSim.Services.AssetService
|
||||||
{
|
{
|
||||||
protected IAssetDataPlugin m_Database = null;
|
protected IAssetDataPlugin m_Database = null;
|
||||||
protected IAssetLoader m_AssetLoader = null;
|
protected IAssetLoader m_AssetLoader = null;
|
||||||
|
protected string m_ConfigName = "AssetService";
|
||||||
|
|
||||||
public AssetServiceBase(IConfigSource config) : base(config)
|
public AssetServiceBase(IConfigSource config)
|
||||||
|
: this(config, "AssetService")
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public AssetServiceBase(IConfigSource config, string configName) : base(config)
|
||||||
|
{
|
||||||
|
if (configName != string.Empty)
|
||||||
|
m_ConfigName = configName;
|
||||||
|
|
||||||
string dllName = String.Empty;
|
string dllName = String.Empty;
|
||||||
string connString = String.Empty;
|
string connString = String.Empty;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Try reading the [AssetService] section first, if it exists
|
// Try reading the [AssetService] section, if it exists
|
||||||
//
|
//
|
||||||
IConfig assetConfig = config.Configs["AssetService"];
|
IConfig assetConfig = config.Configs[m_ConfigName];
|
||||||
if (assetConfig != null)
|
if (assetConfig != null)
|
||||||
{
|
{
|
||||||
dllName = assetConfig.GetString("StorageProvider", dllName);
|
dllName = assetConfig.GetString("StorageProvider", dllName);
|
||||||
|
|
|
@ -58,10 +58,10 @@ namespace OpenSim.Services.HypergridService
|
||||||
|
|
||||||
private UserAccountCache m_Cache;
|
private UserAccountCache m_Cache;
|
||||||
|
|
||||||
public HGAssetService(IConfigSource config) : base(config)
|
public HGAssetService(IConfigSource config, string configName) : base(config, configName)
|
||||||
{
|
{
|
||||||
m_log.Debug("[HGAsset Service]: Starting");
|
m_log.Debug("[HGAsset Service]: Starting");
|
||||||
IConfig assetConfig = config.Configs["HGAssetService"];
|
IConfig assetConfig = config.Configs[configName];
|
||||||
if (assetConfig == null)
|
if (assetConfig == null)
|
||||||
throw new Exception("No HGAssetService configuration");
|
throw new Exception("No HGAssetService configuration");
|
||||||
|
|
||||||
|
|
|
@ -60,36 +60,19 @@ namespace OpenSim.Services.HypergridService
|
||||||
|
|
||||||
private UserAccountCache m_Cache;
|
private UserAccountCache m_Cache;
|
||||||
|
|
||||||
public HGInventoryService(IConfigSource config)
|
public HGInventoryService(IConfigSource config, string configName)
|
||||||
: base(config)
|
: base(config, configName)
|
||||||
{
|
{
|
||||||
m_log.Debug("[HGInventory Service]: Starting");
|
m_log.Debug("[HGInventory Service]: Starting");
|
||||||
|
if (configName != string.Empty)
|
||||||
string dllName = String.Empty;
|
m_ConfigName = configName;
|
||||||
string connString = String.Empty;
|
|
||||||
//string realm = "Inventory"; // OSG version doesn't use this
|
|
||||||
|
|
||||||
//
|
|
||||||
// Try reading the [DatabaseService] section, if it exists
|
|
||||||
//
|
|
||||||
IConfig dbConfig = config.Configs["DatabaseService"];
|
|
||||||
if (dbConfig != null)
|
|
||||||
{
|
|
||||||
if (dllName == String.Empty)
|
|
||||||
dllName = dbConfig.GetString("StorageProvider", String.Empty);
|
|
||||||
if (connString == String.Empty)
|
|
||||||
connString = dbConfig.GetString("ConnectionString", String.Empty);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Try reading the [InventoryService] section, if it exists
|
// Try reading the [InventoryService] section, if it exists
|
||||||
//
|
//
|
||||||
IConfig invConfig = config.Configs["HGInventoryService"];
|
IConfig invConfig = config.Configs[m_ConfigName];
|
||||||
if (invConfig != null)
|
if (invConfig != null)
|
||||||
{
|
{
|
||||||
dllName = invConfig.GetString("StorageProvider", dllName);
|
|
||||||
connString = invConfig.GetString("ConnectionString", connString);
|
|
||||||
|
|
||||||
// realm = authConfig.GetString("Realm", realm);
|
// realm = authConfig.GetString("Realm", realm);
|
||||||
string userAccountsDll = invConfig.GetString("UserAccountsService", string.Empty);
|
string userAccountsDll = invConfig.GetString("UserAccountsService", string.Empty);
|
||||||
if (userAccountsDll == string.Empty)
|
if (userAccountsDll == string.Empty)
|
||||||
|
@ -108,17 +91,6 @@ namespace OpenSim.Services.HypergridService
|
||||||
m_Cache = UserAccountCache.CreateUserAccountCache(m_UserAccountService);
|
m_Cache = UserAccountCache.CreateUserAccountCache(m_UserAccountService);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// We tried, but this doesn't exist. We can't proceed.
|
|
||||||
//
|
|
||||||
if (dllName == String.Empty)
|
|
||||||
throw new Exception("No StorageProvider configured");
|
|
||||||
|
|
||||||
m_Database = LoadPlugin<IXInventoryData>(dllName,
|
|
||||||
new Object[] {connString, String.Empty});
|
|
||||||
if (m_Database == null)
|
|
||||||
throw new Exception("Could not find a storage interface in the given module");
|
|
||||||
|
|
||||||
m_log.Debug("[HG INVENTORY SERVICE]: Starting...");
|
m_log.Debug("[HG INVENTORY SERVICE]: Starting...");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,9 +46,17 @@ namespace OpenSim.Services.InventoryService
|
||||||
|
|
||||||
protected IXInventoryData m_Database;
|
protected IXInventoryData m_Database;
|
||||||
protected bool m_AllowDelete = true;
|
protected bool m_AllowDelete = true;
|
||||||
|
protected string m_ConfigName = "InventoryService";
|
||||||
|
|
||||||
public XInventoryService(IConfigSource config) : base(config)
|
public XInventoryService(IConfigSource config)
|
||||||
|
: this(config, "InventoryService")
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
public XInventoryService(IConfigSource config, string configName) : base(config)
|
||||||
|
{
|
||||||
|
if (configName != string.Empty)
|
||||||
|
m_ConfigName = configName;
|
||||||
|
|
||||||
string dllName = String.Empty;
|
string dllName = String.Empty;
|
||||||
string connString = String.Empty;
|
string connString = String.Empty;
|
||||||
//string realm = "Inventory"; // OSG version doesn't use this
|
//string realm = "Inventory"; // OSG version doesn't use this
|
||||||
|
@ -56,7 +64,7 @@ namespace OpenSim.Services.InventoryService
|
||||||
//
|
//
|
||||||
// Try reading the [InventoryService] section first, if it exists
|
// Try reading the [InventoryService] section first, if it exists
|
||||||
//
|
//
|
||||||
IConfig authConfig = config.Configs["InventoryService"];
|
IConfig authConfig = config.Configs[m_ConfigName];
|
||||||
if (authConfig != null)
|
if (authConfig != null)
|
||||||
{
|
{
|
||||||
dllName = authConfig.GetString("StorageProvider", dllName);
|
dllName = authConfig.GetString("StorageProvider", dllName);
|
||||||
|
|
|
@ -864,8 +864,9 @@
|
||||||
CcdMotionThreshold = 0.0
|
CcdMotionThreshold = 0.0
|
||||||
CcdSweptSphereRadius = 0.0
|
CcdSweptSphereRadius = 0.0
|
||||||
ContactProcessingThreshold = 0.1
|
ContactProcessingThreshold = 0.1
|
||||||
|
; If setting a pool size, also disable dynamic allocation (default pool size is 4096 with dynamic alloc)
|
||||||
MaxPersistantManifoldPoolSize = 0;
|
MaxPersistantManifoldPoolSize = 0;
|
||||||
ShouldDisableContactPoolDynamicAllocation = True;
|
ShouldDisableContactPoolDynamicAllocation = False;
|
||||||
ShouldForceUpdateAllAabbs = False;
|
ShouldForceUpdateAllAabbs = False;
|
||||||
ShouldRandomizeSolverOrder = False;
|
ShouldRandomizeSolverOrder = False;
|
||||||
ShouldSplitSimulationIslands = False;
|
ShouldSplitSimulationIslands = False;
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue