diff options
Diffstat (limited to '')
11 files changed, 117 insertions, 39 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs index bf24030..2bb24ae 100644 --- a/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs | |||
@@ -57,6 +57,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Profile | |||
57 | 57 | ||
58 | public void Initialise(IConfigSource config) | 58 | public void Initialise(IConfigSource config) |
59 | { | 59 | { |
60 | if(config.Configs["UserProfiles"] != null) | ||
61 | return; | ||
62 | |||
60 | m_log.DebugFormat("[PROFILE MODULE]: Basic Profile Module enabled"); | 63 | m_log.DebugFormat("[PROFILE MODULE]: Basic Profile Module enabled"); |
61 | m_Enabled = true; | 64 | m_Enabled = true; |
62 | } | 65 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs index a97c9b4..322addd 100644 --- a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs | |||
@@ -130,6 +130,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles | |||
130 | 130 | ||
131 | if (profileConfig == null) | 131 | if (profileConfig == null) |
132 | { | 132 | { |
133 | m_log.Debug("[PROFILES]: UserProfiles disabled, no configuration"); | ||
133 | Enabled = false; | 134 | Enabled = false; |
134 | return; | 135 | return; |
135 | } | 136 | } |
@@ -1316,7 +1317,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.UserProfiles | |||
1316 | Stream rstream = webResponse.GetResponseStream(); | 1317 | Stream rstream = webResponse.GetResponseStream(); |
1317 | 1318 | ||
1318 | OSDMap response = new OSDMap(); | 1319 | OSDMap response = new OSDMap(); |
1319 | response = (OSDMap)OSDParser.DeserializeJson(rstream); | 1320 | try |
1321 | { | ||
1322 | response = (OSDMap)OSDParser.DeserializeJson(rstream); | ||
1323 | } | ||
1324 | catch (Exception e) | ||
1325 | { | ||
1326 | m_log.DebugFormat("[PROFILES]: JsonRpcRequest Error {0} - remote user with legacy profiles?", e.Message); | ||
1327 | return false; | ||
1328 | } | ||
1329 | |||
1320 | if(response.ContainsKey("error")) | 1330 | if(response.ContainsKey("error")) |
1321 | { | 1331 | { |
1322 | data = response["error"]; | 1332 | data = response["error"]; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs index d221d68..9f58175 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs | |||
@@ -322,7 +322,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
322 | // a copy of the local asset. | 322 | // a copy of the local asset. |
323 | m_Cache.Cache(asset); | 323 | m_Cache.Cache(asset); |
324 | 324 | ||
325 | if (asset.Temporary || asset.Local) | 325 | if (asset.Local) |
326 | { | 326 | { |
327 | if (m_Cache != null) | 327 | if (m_Cache != null) |
328 | m_Cache.Cache(asset); | 328 | m_Cache.Cache(asset); |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs index 480cd69..52b1039 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs | |||
@@ -258,7 +258,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
258 | if (m_Cache != null) | 258 | if (m_Cache != null) |
259 | m_Cache.Cache(asset); | 259 | m_Cache.Cache(asset); |
260 | 260 | ||
261 | if (asset.Temporary || asset.Local) | 261 | if (asset.Local) |
262 | { | 262 | { |
263 | // m_log.DebugFormat( | 263 | // m_log.DebugFormat( |
264 | // "[LOCAL ASSET SERVICE CONNECTOR]: Returning asset {0} {1} without querying database since status Temporary = {2}, Local = {3}", | 264 | // "[LOCAL ASSET SERVICE CONNECTOR]: Returning asset {0} {1} without querying database since status Temporary = {2}, Local = {3}", |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs index 1982473..7073433 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs | |||
@@ -93,7 +93,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | |||
93 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); | 93 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); |
94 | lasc.Initialise(config); | 94 | lasc.Initialise(config); |
95 | 95 | ||
96 | // If it is local, it should not be stored | ||
96 | AssetBase a1 = AssetHelpers.CreateNotecardAsset(); | 97 | AssetBase a1 = AssetHelpers.CreateNotecardAsset(); |
98 | a1.Local = true; | ||
97 | a1.Temporary = true; | 99 | a1.Temporary = true; |
98 | 100 | ||
99 | lasc.Store(a1); | 101 | lasc.Store(a1); |
@@ -102,6 +104,24 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | |||
102 | Assert.That(lasc.GetData(a1.ID), Is.Null); | 104 | Assert.That(lasc.GetData(a1.ID), Is.Null); |
103 | Assert.That(lasc.GetMetadata(a1.ID), Is.Null); | 105 | Assert.That(lasc.GetMetadata(a1.ID), Is.Null); |
104 | 106 | ||
107 | // If it is remote, it should be stored | ||
108 | // AssetBase a2 = AssetHelpers.CreateNotecardAsset(); | ||
109 | // a2.Local = false; | ||
110 | // a2.Temporary = true; | ||
111 | |||
112 | // lasc.Store(a2); | ||
113 | |||
114 | // AssetBase retreivedA2 = lasc.Get(a2.ID); | ||
115 | // Assert.That(retreivedA2.ID, Is.EqualTo(a2.ID)); | ||
116 | // Assert.That(retreivedA2.Metadata.ID, Is.EqualTo(a2.Metadata.ID)); | ||
117 | // Assert.That(retreivedA2.Data.Length, Is.EqualTo(a2.Data.Length)); | ||
118 | |||
119 | // AssetMetadata retrievedA2Metadata = lasc.GetMetadata(a2.ID); | ||
120 | // Assert.That(retrievedA2Metadata.ID, Is.EqualTo(a2.ID)); | ||
121 | |||
122 | // byte[] retrievedA2Data = lasc.GetData(a2.ID); | ||
123 | // Assert.That(retrievedA2Data.Length, Is.EqualTo(a2.Data.Length)); | ||
124 | |||
105 | // TODO: Add cache and check that this does receive a copy of the asset | 125 | // TODO: Add cache and check that this does receive a copy of the asset |
106 | } | 126 | } |
107 | 127 | ||
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs index cca887a..a4c5e08 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs | |||
@@ -148,7 +148,7 @@ public abstract class BSPhysObject : PhysicsActor | |||
148 | // The asset state is first 'Unknown' then 'Waiting' then either 'Failed' or 'Fetched'. | 148 | // The asset state is first 'Unknown' then 'Waiting' then either 'Failed' or 'Fetched'. |
149 | public enum PrimAssetCondition | 149 | public enum PrimAssetCondition |
150 | { | 150 | { |
151 | Unknown, Waiting, Failed, Fetched | 151 | Unknown, Waiting, FailedAssetFetch, FailedMeshing, Fetched |
152 | } | 152 | } |
153 | public PrimAssetCondition PrimAssetState { get; set; } | 153 | public PrimAssetCondition PrimAssetState { get; set; } |
154 | 154 | ||
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs index 423c389..dec6b6f 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs | |||
@@ -249,7 +249,7 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters | |||
249 | TerrainManager.CreateInitialGroundPlaneAndTerrain(); | 249 | TerrainManager.CreateInitialGroundPlaneAndTerrain(); |
250 | 250 | ||
251 | // Put some informational messages into the log file. | 251 | // Put some informational messages into the log file. |
252 | m_log.WarnFormat("{0} Linksets implemented with {1}", LogHeader, (BSLinkset.LinksetImplementation)BSParam.LinksetImplementation); | 252 | m_log.InfoFormat("{0} Linksets implemented with {1}", LogHeader, (BSLinkset.LinksetImplementation)BSParam.LinksetImplementation); |
253 | 253 | ||
254 | InTaintTime = false; | 254 | InTaintTime = false; |
255 | m_initialized = true; | 255 | m_initialized = true; |
@@ -374,7 +374,7 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters | |||
374 | } | 374 | } |
375 | else | 375 | else |
376 | { | 376 | { |
377 | m_log.WarnFormat("{0} Selected bullet engine {1} -> {2}/{3}", LogHeader, engineName, ret.BulletEngineName, ret.BulletEngineVersion); | 377 | m_log.InfoFormat("{0} Selected bullet engine {1} -> {2}/{3}", LogHeader, engineName, ret.BulletEngineName, ret.BulletEngineVersion); |
378 | } | 378 | } |
379 | 379 | ||
380 | return ret; | 380 | return ret; |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs b/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs index 326fc9e..a780526 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs | |||
@@ -167,7 +167,7 @@ public abstract class BSShape | |||
167 | // Prevent trying to keep fetching the mesh by declaring failure. | 167 | // Prevent trying to keep fetching the mesh by declaring failure. |
168 | if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Fetched) | 168 | if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Fetched) |
169 | { | 169 | { |
170 | prim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed; | 170 | prim.PrimAssetState = BSPhysObject.PrimAssetCondition.FailedMeshing; |
171 | physicsScene.Logger.WarnFormat("{0} Fetched asset would not mesh. {1}, texture={2}", | 171 | physicsScene.Logger.WarnFormat("{0} Fetched asset would not mesh. {1}, texture={2}", |
172 | LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture); | 172 | LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture); |
173 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,setFailed,objNam={1},tex={2}", | 173 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,setFailed,objNam={1},tex={2}", |
@@ -177,7 +177,8 @@ public abstract class BSShape | |||
177 | { | 177 | { |
178 | // If this mesh has an underlying asset and we have not failed getting it before, fetch the asset | 178 | // If this mesh has an underlying asset and we have not failed getting it before, fetch the asset |
179 | if (prim.BaseShape.SculptEntry | 179 | if (prim.BaseShape.SculptEntry |
180 | && prim.PrimAssetState != BSPhysObject.PrimAssetCondition.Failed | 180 | && prim.PrimAssetState != BSPhysObject.PrimAssetCondition.FailedAssetFetch |
181 | && prim.PrimAssetState != BSPhysObject.PrimAssetCondition.FailedMeshing | ||
181 | && prim.PrimAssetState != BSPhysObject.PrimAssetCondition.Waiting | 182 | && prim.PrimAssetState != BSPhysObject.PrimAssetCondition.Waiting |
182 | && prim.BaseShape.SculptTexture != OMV.UUID.Zero | 183 | && prim.BaseShape.SculptTexture != OMV.UUID.Zero |
183 | ) | 184 | ) |
@@ -219,7 +220,7 @@ public abstract class BSShape | |||
219 | } | 220 | } |
220 | if (!assetFound) | 221 | if (!assetFound) |
221 | { | 222 | { |
222 | yprim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed; | 223 | yprim.PrimAssetState = BSPhysObject.PrimAssetCondition.FailedAssetFetch; |
223 | } | 224 | } |
224 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,fetchAssetCallback,found={1},isSculpt={2},ids={3}", | 225 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,fetchAssetCallback,found={1},isSculpt={2},ids={3}", |
225 | yprim.LocalID, assetFound, yprim.BaseShape.SculptEntry, mismatchIDs ); | 226 | yprim.LocalID, assetFound, yprim.BaseShape.SculptEntry, mismatchIDs ); |
@@ -227,7 +228,7 @@ public abstract class BSShape | |||
227 | } | 228 | } |
228 | else | 229 | else |
229 | { | 230 | { |
230 | xprim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed; | 231 | xprim.PrimAssetState = BSPhysObject.PrimAssetCondition.FailedAssetFetch; |
231 | physicsScene.Logger.ErrorFormat("{0} Physical object requires asset but no asset provider. Name={1}", | 232 | physicsScene.Logger.ErrorFormat("{0} Physical object requires asset but no asset provider. Name={1}", |
232 | LogHeader, physicsScene.Name); | 233 | LogHeader, physicsScene.Name); |
233 | } | 234 | } |
@@ -235,13 +236,20 @@ public abstract class BSShape | |||
235 | } | 236 | } |
236 | else | 237 | else |
237 | { | 238 | { |
238 | if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed) | 239 | if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedAssetFetch) |
239 | { | 240 | { |
240 | physicsScene.Logger.WarnFormat("{0} Mesh failed to fetch asset. obj={1}, texture={2}", | 241 | physicsScene.Logger.WarnFormat("{0} Mesh failed to fetch asset. obj={1}, texture={2}", |
241 | LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture); | 242 | LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture); |
242 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,wasFailed,objNam={1},tex={2}", | 243 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,wasFailed,objNam={1},tex={2}", |
243 | prim.LocalID, prim.PhysObjectName, prim.BaseShape.SculptTexture); | 244 | prim.LocalID, prim.PhysObjectName, prim.BaseShape.SculptTexture); |
244 | } | 245 | } |
246 | if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedMeshing) | ||
247 | { | ||
248 | physicsScene.Logger.WarnFormat("{0} Mesh asset would not mesh. obj={1}, texture={2}", | ||
249 | LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture); | ||
250 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,wasFailedMeshing,objNam={1},tex={2}", | ||
251 | prim.LocalID, prim.PhysObjectName, prim.BaseShape.SculptTexture); | ||
252 | } | ||
245 | } | 253 | } |
246 | } | 254 | } |
247 | 255 | ||
@@ -374,7 +382,9 @@ public class BSShapeMesh : BSShape | |||
374 | 382 | ||
375 | // Check to see if mesh was created (might require an asset). | 383 | // Check to see if mesh was created (might require an asset). |
376 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); | 384 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); |
377 | if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed) | 385 | if (!newShape.isNativeShape |
386 | || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedMeshing | ||
387 | || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedAssetFetch) | ||
378 | { | 388 | { |
379 | // If a mesh was what was created, remember the built shape for later sharing. | 389 | // If a mesh was what was created, remember the built shape for later sharing. |
380 | // Also note that if meshing failed we put it in the mesh list as there is nothing else to do about the mesh. | 390 | // Also note that if meshing failed we put it in the mesh list as there is nothing else to do about the mesh. |
@@ -519,7 +529,7 @@ public class BSShapeMesh : BSShape | |||
519 | else | 529 | else |
520 | { | 530 | { |
521 | // Force the asset condition to 'failed' so we won't try to keep fetching and processing this mesh. | 531 | // Force the asset condition to 'failed' so we won't try to keep fetching and processing this mesh. |
522 | prim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed; | 532 | prim.PrimAssetState = BSPhysObject.PrimAssetCondition.FailedMeshing; |
523 | physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim {1} at {2} in {3}", | 533 | physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim {1} at {2} in {3}", |
524 | LogHeader, prim.PhysObjectName, prim.RawPosition, physicsScene.Name); | 534 | LogHeader, prim.PhysObjectName, prim.RawPosition, physicsScene.Name); |
525 | physicsScene.DetailLog("{0},BSShapeMesh.CreatePhysicalMesh,allDegenerate,key={1}", prim.LocalID, newMeshKey); | 535 | physicsScene.DetailLog("{0},BSShapeMesh.CreatePhysicalMesh,allDegenerate,key={1}", prim.LocalID, newMeshKey); |
@@ -561,7 +571,9 @@ public class BSShapeHull : BSShape | |||
561 | 571 | ||
562 | // Check to see if hull was created (might require an asset). | 572 | // Check to see if hull was created (might require an asset). |
563 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); | 573 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); |
564 | if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed) | 574 | if (!newShape.isNativeShape |
575 | || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedMeshing | ||
576 | || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedAssetFetch) | ||
565 | { | 577 | { |
566 | // If a mesh was what was created, remember the built shape for later sharing. | 578 | // If a mesh was what was created, remember the built shape for later sharing. |
567 | Hulls.Add(newHullKey, retHull); | 579 | Hulls.Add(newHullKey, retHull); |
@@ -1081,10 +1093,13 @@ public class BSShapeGImpact : BSShape | |||
1081 | // Check to see if mesh was created (might require an asset). | 1093 | // Check to see if mesh was created (might require an asset). |
1082 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); | 1094 | newShape = VerifyMeshCreated(physicsScene, newShape, prim); |
1083 | newShape.shapeKey = newMeshKey; | 1095 | newShape.shapeKey = newMeshKey; |
1084 | if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed) | 1096 | if (!newShape.isNativeShape |
1097 | || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedMeshing | ||
1098 | || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedAssetFetch) | ||
1085 | { | 1099 | { |
1086 | // If a mesh was what was created, remember the built shape for later sharing. | 1100 | // If a mesh was what was created, remember the built shape for later sharing. |
1087 | // Also note that if meshing failed we put it in the mesh list as there is nothing else to do about the mesh. | 1101 | // Also note that if meshing failed we put it in the mesh list as there is nothing |
1102 | // else to do about the mesh. | ||
1088 | GImpacts.Add(newMeshKey, retGImpact); | 1103 | GImpacts.Add(newMeshKey, retGImpact); |
1089 | } | 1104 | } |
1090 | 1105 | ||
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt index df1da63..1e01526 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt +++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt | |||
@@ -2,11 +2,6 @@ CURRENT PROBLEMS TO FIX AND/OR LOOK AT | |||
2 | ================================================= | 2 | ================================================= |
3 | Script changing rotation of child prim while vehicle moving (eg turning wheel) causes | 3 | Script changing rotation of child prim while vehicle moving (eg turning wheel) causes |
4 | the wheel to appear to jump back. Looks like sending position from previous update. | 4 | the wheel to appear to jump back. Looks like sending position from previous update. |
5 | Vehicle ride, get up, ride again. Second time vehicle does not act correctly. | ||
6 | Have to rez new vehicle and delete the old to fix situation. | ||
7 | Hitting RESET on Nebadon's vehicle while riding causes vehicle to get into odd | ||
8 | position state where it will not settle onto ground properly, etc | ||
9 | Two of Nebadon vehicles in a sim max the CPU. This is new. | ||
10 | Enable vehicle border crossings (at least as poorly as ODE) | 5 | Enable vehicle border crossings (at least as poorly as ODE) |
11 | Terrain skirts | 6 | Terrain skirts |
12 | Avatar created in previous region and not new region when crossing border | 7 | Avatar created in previous region and not new region when crossing border |
@@ -23,24 +18,17 @@ vehicle angular banking | |||
23 | Center-of-gravity | 18 | Center-of-gravity |
24 | Vehicle angular deflection | 19 | Vehicle angular deflection |
25 | Preferred orientation angular correction fix | 20 | Preferred orientation angular correction fix |
26 | when should angular and linear motor targets be zeroed? when selected? | ||
27 | Need a vehicle.clear()? Or an 'else' in prestep if not physical. | ||
28 | Teravus llMoveToTarget script debug | 21 | Teravus llMoveToTarget script debug |
29 | Mixing of hover, buoyancy/gravity, moveToTarget, into one force | 22 | Mixing of hover, buoyancy/gravity, moveToTarget, into one force |
30 | Setting hover height to zero disables hover even if hover flags are on (from SL wiki) | 23 | Setting hover height to zero disables hover even if hover flags are on (from SL wiki) |
31 | limitMotorUp calibration (more down?) | 24 | limitMotorUp calibration (more down?) |
32 | llRotLookAt | 25 | llRotLookAt |
33 | llLookAt | 26 | llLookAt |
34 | Avatars walking up stairs (HALF DONE) | 27 | Convert to avatar mesh capsule. Include rotation of capsule. |
35 | Avatar movement | ||
36 | flying into a wall doesn't stop avatar who keeps appearing to move through the obstacle (DONE) | ||
37 | walking up stairs is not calibrated correctly (stairs out of Kepler cabin) (DONE) | ||
38 | avatar capsule rotation completed (NOT DONE - Bullet's capsule shape is not the solution) | ||
39 | Vehicle script tuning/debugging | 28 | Vehicle script tuning/debugging |
40 | Avanti speed script | 29 | Avanti speed script |
41 | Weapon shooter script | 30 | Weapon shooter script |
42 | Move material definitions (friction, ...) into simulator. | 31 | Move material definitions (friction, ...) into simulator. |
43 | Add material densities to the material types. | ||
44 | One sided meshes? Should terrain be built into a closed shape? | 32 | One sided meshes? Should terrain be built into a closed shape? |
45 | When meshes get partially wedged into the terrain, they cannot push themselves out. | 33 | When meshes get partially wedged into the terrain, they cannot push themselves out. |
46 | It is possible that Bullet processes collisions whether entering or leaving a mesh. | 34 | It is possible that Bullet processes collisions whether entering or leaving a mesh. |
@@ -53,12 +41,8 @@ LINEAR_MOTOR_DIRECTION values should be clamped to reasonable numbers. | |||
53 | Same for other velocity settings. | 41 | Same for other velocity settings. |
54 | UBit improvements to remove rubber-banding of avatars sitting on vehicle child prims: | 42 | UBit improvements to remove rubber-banding of avatars sitting on vehicle child prims: |
55 | https://github.com/UbitUmarov/Ubit-opensim | 43 | https://github.com/UbitUmarov/Ubit-opensim |
56 | Border crossing with linked vehicle causes crash | ||
57 | 20121129.1411: editting/moving phys object across region boundries causes crash | ||
58 | getPos-> btRigidBody::upcast -> getBodyType -> BOOM | ||
59 | Vehicles (Move smoothly) | 44 | Vehicles (Move smoothly) |
60 | Some vehicles should not be able to turn if no speed or off ground. | 45 | Some vehicles should not be able to turn if no speed or off ground. |
61 | What to do if vehicle and prim buoyancy differ? | ||
62 | Cannot edit/move a vehicle being ridden: it jumps back to the origional position. | 46 | Cannot edit/move a vehicle being ridden: it jumps back to the origional position. |
63 | Neb car jiggling left and right | 47 | Neb car jiggling left and right |
64 | Happens on terrain and any other mesh object. Flat cubes are much smoother. | 48 | Happens on terrain and any other mesh object. Flat cubes are much smoother. |
@@ -68,8 +52,6 @@ For limitMotorUp, use raycast down to find if vehicle is in the air. | |||
68 | Verify llGetVel() is returning a smooth and good value for vehicle movement. | 52 | Verify llGetVel() is returning a smooth and good value for vehicle movement. |
69 | llGetVel() should return the root's velocity if requested in a child prim. | 53 | llGetVel() should return the root's velocity if requested in a child prim. |
70 | Implement function efficiency for lineaar and angular motion. | 54 | Implement function efficiency for lineaar and angular motion. |
71 | After getting off a vehicle, the root prim is phantom (can be walked through) | ||
72 | Need to force a position update for the root prim after compound shape destruction | ||
73 | Linkset explosion after three "rides" on Nebadon lite vehicle (LinksetConstraint) | 55 | Linkset explosion after three "rides" on Nebadon lite vehicle (LinksetConstraint) |
74 | Remove vehicle angular velocity zeroing in BSPrim.UpdateProperties(). | 56 | Remove vehicle angular velocity zeroing in BSPrim.UpdateProperties(). |
75 | A kludge that isn't fixing the real problem of Bullet adding extra motion. | 57 | A kludge that isn't fixing the real problem of Bullet adding extra motion. |
@@ -78,11 +60,10 @@ Incorporate inter-relationship of angular corrections. For instance, angularDefl | |||
78 | creates over-correction and over-shoot and wabbling. | 60 | creates over-correction and over-shoot and wabbling. |
79 | Vehicle attributes are not restored when a vehicle is rezzed on region creation | 61 | Vehicle attributes are not restored when a vehicle is rezzed on region creation |
80 | Create vehicle, setup vehicle properties, restart region, vehicle is not reinitialized. | 62 | Create vehicle, setup vehicle properties, restart region, vehicle is not reinitialized. |
63 | What to do if vehicle and prim buoyancy differ? | ||
81 | 64 | ||
82 | GENERAL TODO LIST: | 65 | GENERAL TODO LIST: |
83 | ================================================= | 66 | ================================================= |
84 | Explore btGImpactMeshShape as alternative to convex hulls for simplified physical objects. | ||
85 | Regular triangle meshes don't do physical collisions. | ||
86 | Resitution of a prim works on another prim but not on terrain. | 67 | Resitution of a prim works on another prim but not on terrain. |
87 | The dropped prim doesn't bounce properly on the terrain. | 68 | The dropped prim doesn't bounce properly on the terrain. |
88 | Add a sanity check for PIDTarget location. | 69 | Add a sanity check for PIDTarget location. |
@@ -359,4 +340,25 @@ Lock axis (DONE 20130401) | |||
359 | Terrain detail: double terrain mesh detail (DONE) | 340 | Terrain detail: double terrain mesh detail (DONE) |
360 | Use the HACD convex hull routine in Bullet rather than the C# version. | 341 | Use the HACD convex hull routine in Bullet rather than the C# version. |
361 | Speed up hullifying large meshes. (DONE) | 342 | Speed up hullifying large meshes. (DONE) |
343 | Vehicle ride, get up, ride again. Second time vehicle does not act correctly. | ||
344 | Have to rez new vehicle and delete the old to fix situation. | ||
345 | (DONE 20130520: normalize rotations) | ||
346 | Hitting RESET on Nebadon's vehicle while riding causes vehicle to get into odd | ||
347 | position state where it will not settle onto ground properly, etc | ||
348 | (DONE 20130520: normalize rotations) | ||
349 | Two of Nebadon vehicles in a sim max the CPU. This is new. | ||
350 | (DONE 20130520: two problems: if asset failed to mesh, constantly refetched | ||
351 | asset; vehicle was sending too many messages to all linkset members) | ||
352 | Add material densities to the material types. (WILL NOT BE DONE: not how it is done) | ||
353 | Avatars walking up stairs (DONE) | ||
354 | Avatar movement | ||
355 | flying into a wall doesn't stop avatar who keeps appearing to move through the obstacle (DONE) | ||
356 | walking up stairs is not calibrated correctly (stairs out of Kepler cabin) (DONE) | ||
357 | avatar capsule rotation completed (NOT DONE - Bullet's capsule shape is not the solution) | ||
358 | After getting off a vehicle, the root prim is phantom (can be walked through) | ||
359 | Need to force a position update for the root prim after compound shape destruction | ||
360 | (DONE) | ||
361 | Explore btGImpactMeshShape as alternative to convex hulls for simplified physical objects. | ||
362 | Regular triangle meshes don't do physical collisions. | ||
363 | (DONE: discovered GImpact is VERY CPU intensive) | ||
362 | 364 | ||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 7c375e6..f5d5bc6 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -5109,6 +5109,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5109 | 5109 | ||
5110 | s = Math.Cos(angle * 0.5); | 5110 | s = Math.Cos(angle * 0.5); |
5111 | t = Math.Sin(angle * 0.5); // temp value to avoid 2 more sin() calcs | 5111 | t = Math.Sin(angle * 0.5); // temp value to avoid 2 more sin() calcs |
5112 | axis = LSL_Vector.Norm(axis); | ||
5112 | x = axis.x * t; | 5113 | x = axis.x * t; |
5113 | y = axis.y * t; | 5114 | y = axis.y * t; |
5114 | z = axis.z * t; | 5115 | z = axis.z * t; |
@@ -5149,7 +5150,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5149 | y = rot.y / s; | 5150 | y = rot.y / s; |
5150 | z = rot.z / s; | 5151 | z = rot.z / s; |
5151 | } | 5152 | } |
5152 | 5153 | if ((double.IsNaN(x)) || double.IsInfinity(x)) x = 0; | |
5154 | if ((double.IsNaN(y)) || double.IsInfinity(y)) y = 0; | ||
5155 | if ((double.IsNaN(z)) || double.IsInfinity(z)) z = 0; | ||
5153 | return new LSL_Vector(x,y,z); | 5156 | return new LSL_Vector(x,y,z); |
5154 | } | 5157 | } |
5155 | 5158 | ||
@@ -5171,7 +5174,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5171 | } | 5174 | } |
5172 | 5175 | ||
5173 | double angle = 2 * Math.Acos(rot.s); | 5176 | double angle = 2 * Math.Acos(rot.s); |
5174 | 5177 | if ((double.IsNaN(angle)) || double.IsInfinity(angle)) angle = 0; | |
5175 | return angle; | 5178 | return angle; |
5176 | } | 5179 | } |
5177 | 5180 | ||
diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs index 3e69ab9..c685afb 100644 --- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs +++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs | |||
@@ -371,6 +371,31 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
371 | 371 | ||
372 | #endregion | 372 | #endregion |
373 | 373 | ||
374 | #region Methods | ||
375 | public Quaternion Normalize() | ||
376 | { | ||
377 | double length = Math.Sqrt(x * x + y * y + z * z + s * s); | ||
378 | if (length < float.Epsilon) | ||
379 | { | ||
380 | x = 1; | ||
381 | y = 0; | ||
382 | z = 0; | ||
383 | s = 0; | ||
384 | } | ||
385 | else | ||
386 | { | ||
387 | |||
388 | double invLength = 1.0 / length; | ||
389 | x *= invLength; | ||
390 | y *= invLength; | ||
391 | z *= invLength; | ||
392 | s *= invLength; | ||
393 | } | ||
394 | |||
395 | return this; | ||
396 | } | ||
397 | #endregion | ||
398 | |||
374 | #region Overriders | 399 | #region Overriders |
375 | 400 | ||
376 | public override int GetHashCode() | 401 | public override int GetHashCode() |