diff options
Diffstat (limited to 'OpenSim/Region')
7 files changed, 85 insertions, 40 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs index 7073433..4f75191 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/Tests/AssetConnectorTests.cs | |||
@@ -42,7 +42,7 @@ using OpenSim.Tests.Common; | |||
42 | namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | 42 | namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests |
43 | { | 43 | { |
44 | [TestFixture] | 44 | [TestFixture] |
45 | public class AssetConnectorsTests : OpenSimTestCase | 45 | public class AssetConnectorTests : OpenSimTestCase |
46 | { | 46 | { |
47 | [Test] | 47 | [Test] |
48 | public void TestAddAsset() | 48 | public void TestAddAsset() |
@@ -77,7 +77,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | |||
77 | // TODO: Add cache and check that this does receive a copy of the asset | 77 | // TODO: Add cache and check that this does receive a copy of the asset |
78 | } | 78 | } |
79 | 79 | ||
80 | [Test] | ||
81 | public void TestAddTemporaryAsset() | 80 | public void TestAddTemporaryAsset() |
82 | { | 81 | { |
83 | TestHelpers.InMethod(); | 82 | TestHelpers.InMethod(); |
@@ -93,10 +92,45 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | |||
93 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); | 92 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); |
94 | lasc.Initialise(config); | 93 | lasc.Initialise(config); |
95 | 94 | ||
96 | // If it is local, it should not be stored | 95 | // If it is remote, it should be stored |
96 | AssetBase a2 = AssetHelpers.CreateNotecardAsset(); | ||
97 | a2.Local = false; | ||
98 | a2.Temporary = true; | ||
99 | |||
100 | lasc.Store(a2); | ||
101 | |||
102 | AssetBase retreivedA2 = lasc.Get(a2.ID); | ||
103 | Assert.That(retreivedA2.ID, Is.EqualTo(a2.ID)); | ||
104 | Assert.That(retreivedA2.Metadata.ID, Is.EqualTo(a2.Metadata.ID)); | ||
105 | Assert.That(retreivedA2.Data.Length, Is.EqualTo(a2.Data.Length)); | ||
106 | |||
107 | AssetMetadata retrievedA2Metadata = lasc.GetMetadata(a2.ID); | ||
108 | Assert.That(retrievedA2Metadata.ID, Is.EqualTo(a2.ID)); | ||
109 | |||
110 | byte[] retrievedA2Data = lasc.GetData(a2.ID); | ||
111 | Assert.That(retrievedA2Data.Length, Is.EqualTo(a2.Data.Length)); | ||
112 | |||
113 | // TODO: Add cache and check that this does receive a copy of the asset | ||
114 | } | ||
115 | |||
116 | [Test] | ||
117 | public void TestAddLocalAsset() | ||
118 | { | ||
119 | TestHelpers.InMethod(); | ||
120 | // TestHelpers.EnableLogging(); | ||
121 | |||
122 | IConfigSource config = new IniConfigSource(); | ||
123 | config.AddConfig("Modules"); | ||
124 | config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector"); | ||
125 | config.AddConfig("AssetService"); | ||
126 | config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService"); | ||
127 | config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); | ||
128 | |||
129 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); | ||
130 | lasc.Initialise(config); | ||
131 | |||
97 | AssetBase a1 = AssetHelpers.CreateNotecardAsset(); | 132 | AssetBase a1 = AssetHelpers.CreateNotecardAsset(); |
98 | a1.Local = true; | 133 | a1.Local = true; |
99 | a1.Temporary = true; | ||
100 | 134 | ||
101 | lasc.Store(a1); | 135 | lasc.Store(a1); |
102 | 136 | ||
@@ -104,29 +138,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | |||
104 | Assert.That(lasc.GetData(a1.ID), Is.Null); | 138 | Assert.That(lasc.GetData(a1.ID), Is.Null); |
105 | Assert.That(lasc.GetMetadata(a1.ID), Is.Null); | 139 | Assert.That(lasc.GetMetadata(a1.ID), Is.Null); |
106 | 140 | ||
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 | |||
125 | // TODO: Add cache and check that this does receive a copy of the asset | 141 | // TODO: Add cache and check that this does receive a copy of the asset |
126 | } | 142 | } |
127 | 143 | ||
128 | [Test] | 144 | [Test] |
129 | public void TestAddLocalAsset() | 145 | public void TestAddTemporaryLocalAsset() |
130 | { | 146 | { |
131 | TestHelpers.InMethod(); | 147 | TestHelpers.InMethod(); |
132 | // TestHelpers.EnableLogging(); | 148 | // TestHelpers.EnableLogging(); |
@@ -141,8 +157,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.Tests | |||
141 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); | 157 | LocalAssetServicesConnector lasc = new LocalAssetServicesConnector(); |
142 | lasc.Initialise(config); | 158 | lasc.Initialise(config); |
143 | 159 | ||
160 | // If it is local, it should not be stored | ||
144 | AssetBase a1 = AssetHelpers.CreateNotecardAsset(); | 161 | AssetBase a1 = AssetHelpers.CreateNotecardAsset(); |
145 | a1.Local = true; | 162 | a1.Local = true; |
163 | a1.Temporary = true; | ||
146 | 164 | ||
147 | lasc.Store(a1); | 165 | lasc.Store(a1); |
148 | 166 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs b/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs index 5dee64d..b7400ea 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/AnimationSet.cs | |||
@@ -312,18 +312,22 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
312 | buff.Append("dflt="); | 312 | buff.Append("dflt="); |
313 | buff.Append(DefaultAnimation.ToString()); | 313 | buff.Append(DefaultAnimation.ToString()); |
314 | buff.Append(",iDflt="); | 314 | buff.Append(",iDflt="); |
315 | if (DefaultAnimation == ImplicitDefaultAnimation) | 315 | if (DefaultAnimation.Equals(ImplicitDefaultAnimation)) |
316 | buff.Append("same"); | 316 | buff.Append("same"); |
317 | else | 317 | else |
318 | buff.Append(ImplicitDefaultAnimation.ToString()); | 318 | buff.Append(ImplicitDefaultAnimation.ToString()); |
319 | if (m_animations.Count > 0) | 319 | if (m_animations.Count > 0) |
320 | { | 320 | { |
321 | buff.Append(",anims="); | 321 | buff.Append(",anims="); |
322 | bool firstTime = true; | ||
322 | foreach (OpenSim.Framework.Animation anim in m_animations) | 323 | foreach (OpenSim.Framework.Animation anim in m_animations) |
323 | { | 324 | { |
325 | if (!firstTime) | ||
326 | buff.Append(","); | ||
324 | buff.Append("<"); | 327 | buff.Append("<"); |
325 | buff.Append(anim.ToString()); | 328 | buff.Append(anim.ToString()); |
326 | buff.Append(">,"); | 329 | buff.Append(">"); |
330 | firstTime = false; | ||
327 | } | 331 | } |
328 | } | 332 | } |
329 | return buff.ToString(); | 333 | return buff.ToString(); |
diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index a701a79..3b5a5bd 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs | |||
@@ -94,6 +94,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
94 | if (m_animations.Add(animID, m_scenePresence.ControllingClient.NextAnimationSequenceNumber, objectID)) | 94 | if (m_animations.Add(animID, m_scenePresence.ControllingClient.NextAnimationSequenceNumber, objectID)) |
95 | { | 95 | { |
96 | SendAnimPack(); | 96 | SendAnimPack(); |
97 | m_scenePresence.TriggerScenePresenceUpdated(); | ||
97 | } | 98 | } |
98 | } | 99 | } |
99 | 100 | ||
@@ -135,6 +136,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
135 | if (m_animations.Remove(animID, allowNoDefault)) | 136 | if (m_animations.Remove(animID, allowNoDefault)) |
136 | { | 137 | { |
137 | SendAnimPack(); | 138 | SendAnimPack(); |
139 | m_scenePresence.TriggerScenePresenceUpdated(); | ||
138 | } | 140 | } |
139 | } | 141 | } |
140 | 142 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index da80e4f..7b5fdcb 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -763,6 +763,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
763 | for (int i = 0; i < parts.Length; i++) | 763 | for (int i = 0; i < parts.Length; i++) |
764 | { | 764 | { |
765 | SceneObjectPart part = parts[i]; | 765 | SceneObjectPart part = parts[i]; |
766 | if (part.KeyframeMotion != null) | ||
767 | { | ||
768 | part.KeyframeMotion.UpdateSceneObject(this); | ||
769 | } | ||
770 | |||
766 | if (Object.ReferenceEquals(part, m_rootPart)) | 771 | if (Object.ReferenceEquals(part, m_rootPart)) |
767 | continue; | 772 | continue; |
768 | 773 | ||
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index bab14dd..774546c 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -77,7 +77,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
77 | // m_log.DebugFormat("[SCENE PRESENCE]: Destructor called on {0}", Name); | 77 | // m_log.DebugFormat("[SCENE PRESENCE]: Destructor called on {0}", Name); |
78 | // } | 78 | // } |
79 | 79 | ||
80 | private void TriggerScenePresenceUpdated() | 80 | public void TriggerScenePresenceUpdated() |
81 | { | 81 | { |
82 | if (m_scene != null) | 82 | if (m_scene != null) |
83 | m_scene.EventManager.TriggerScenePresenceUpdated(this); | 83 | m_scene.EventManager.TriggerScenePresenceUpdated(this); |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs b/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs index 202a4ce..006a9c1 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSShapes.cs | |||
@@ -168,10 +168,10 @@ public abstract class BSShape | |||
168 | if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Fetched) | 168 | if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Fetched) |
169 | { | 169 | { |
170 | prim.PrimAssetState = BSPhysObject.PrimAssetCondition.FailedMeshing; | 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. prim={1}, texture={2}", |
172 | LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture); | 172 | LogHeader, UsefulPrimInfo(physicsScene, prim), prim.BaseShape.SculptTexture); |
173 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,setFailed,objNam={1},tex={2}", | 173 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,setFailed,prim={1},tex={2}", |
174 | prim.LocalID, prim.PhysObjectName, prim.BaseShape.SculptTexture); | 174 | prim.LocalID, UsefulPrimInfo(physicsScene, prim), prim.BaseShape.SculptTexture); |
175 | } | 175 | } |
176 | else | 176 | else |
177 | { | 177 | { |
@@ -238,17 +238,17 @@ public abstract class BSShape | |||
238 | { | 238 | { |
239 | if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedAssetFetch) | 239 | if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedAssetFetch) |
240 | { | 240 | { |
241 | physicsScene.Logger.WarnFormat("{0} Mesh failed to fetch asset. obj={1}, texture={2}", | 241 | physicsScene.Logger.WarnFormat("{0} Mesh failed to fetch asset. prim={1}, texture={2}", |
242 | LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture); | 242 | LogHeader, UsefulPrimInfo(physicsScene, prim), prim.BaseShape.SculptTexture); |
243 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,wasFailed,objNam={1},tex={2}", | 243 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,wasFailed,prim={1},tex={2}", |
244 | prim.LocalID, prim.PhysObjectName, prim.BaseShape.SculptTexture); | 244 | prim.LocalID, UsefulPrimInfo(physicsScene, prim), prim.BaseShape.SculptTexture); |
245 | } | 245 | } |
246 | if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedMeshing) | 246 | if (prim.PrimAssetState == BSPhysObject.PrimAssetCondition.FailedMeshing) |
247 | { | 247 | { |
248 | physicsScene.Logger.WarnFormat("{0} Mesh asset would not mesh. obj={1}, texture={2}", | 248 | physicsScene.Logger.WarnFormat("{0} Mesh asset would not mesh. prim={1}, texture={2}", |
249 | LogHeader, prim.PhysObjectName, prim.BaseShape.SculptTexture); | 249 | LogHeader, UsefulPrimInfo(physicsScene, prim), prim.BaseShape.SculptTexture); |
250 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,wasFailedMeshing,objNam={1},tex={2}", | 250 | physicsScene.DetailLog("{0},BSShape.VerifyMeshCreated,wasFailedMeshing,prim={1},tex={2}", |
251 | prim.LocalID, prim.PhysObjectName, prim.BaseShape.SculptTexture); | 251 | prim.LocalID, UsefulPrimInfo(physicsScene, prim), prim.BaseShape.SculptTexture); |
252 | } | 252 | } |
253 | } | 253 | } |
254 | } | 254 | } |
@@ -260,6 +260,19 @@ public abstract class BSShape | |||
260 | return fillShape.physShapeInfo; | 260 | return fillShape.physShapeInfo; |
261 | } | 261 | } |
262 | 262 | ||
263 | public static String UsefulPrimInfo(BSScene pScene, BSPhysObject prim) | ||
264 | { | ||
265 | StringBuilder buff = new StringBuilder(prim.PhysObjectName); | ||
266 | buff.Append("/pos="); | ||
267 | buff.Append(prim.RawPosition.ToString()); | ||
268 | if (pScene != null) | ||
269 | { | ||
270 | buff.Append("/rgn="); | ||
271 | buff.Append(pScene.Name); | ||
272 | } | ||
273 | return buff.ToString(); | ||
274 | } | ||
275 | |||
263 | #endregion // Common shape routines | 276 | #endregion // Common shape routines |
264 | } | 277 | } |
265 | 278 | ||
@@ -528,8 +541,7 @@ public class BSShapeMesh : BSShape | |||
528 | { | 541 | { |
529 | // Force the asset condition to 'failed' so we won't try to keep fetching and processing this mesh. | 542 | // Force the asset condition to 'failed' so we won't try to keep fetching and processing this mesh. |
530 | prim.PrimAssetState = BSPhysObject.PrimAssetCondition.FailedMeshing; | 543 | prim.PrimAssetState = BSPhysObject.PrimAssetCondition.FailedMeshing; |
531 | physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim {1} at {2} in {3}", | 544 | physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim={1}", LogHeader, UsefulPrimInfo(physicsScene, prim) ); |
532 | LogHeader, prim.PhysObjectName, prim.RawPosition, physicsScene.Name); | ||
533 | physicsScene.DetailLog("{0},BSShapeMesh.CreatePhysicalMesh,allDegenerate,key={1}", prim.LocalID, newMeshKey); | 545 | physicsScene.DetailLog("{0},BSShapeMesh.CreatePhysicalMesh,allDegenerate,key={1}", prim.LocalID, newMeshKey); |
534 | } | 546 | } |
535 | } | 547 | } |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt index 1e01526..4357ef1 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt +++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt | |||
@@ -1,5 +1,9 @@ | |||
1 | CURRENT PROBLEMS TO FIX AND/OR LOOK AT | 1 | CURRENT PROBLEMS TO FIX AND/OR LOOK AT |
2 | ================================================= | 2 | ================================================= |
3 | Vehicle buoyancy. Computed correctly? Possibly creating very large effective mass. | ||
4 | Interaction of llSetBuoyancy and vehicle buoyancy. Should be additive? | ||
5 | Negative buoyancy computed correctly | ||
6 | Computation of mesh mass. How done? How should it be done? | ||
3 | Script changing rotation of child prim while vehicle moving (eg turning wheel) causes | 7 | 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. | 8 | the wheel to appear to jump back. Looks like sending position from previous update. |
5 | Enable vehicle border crossings (at least as poorly as ODE) | 9 | Enable vehicle border crossings (at least as poorly as ODE) |