diff options
Diffstat (limited to 'OpenSim/Region/Physics/OdePlugin/ODEPrim.cs')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs index 2e78de5..a59f63f 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | |||
@@ -67,6 +67,14 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
67 | private int m_expectedCollisionContacts = 0; | 67 | private int m_expectedCollisionContacts = 0; |
68 | 68 | ||
69 | /// <summary> | 69 | /// <summary> |
70 | /// Gets collide bits so that we can still perform land collisions if a mesh fails to load. | ||
71 | /// </summary> | ||
72 | private int BadMeshAssetCollideBits | ||
73 | { | ||
74 | get { return m_isphysical ? (int)CollisionCategories.Land : 0; } | ||
75 | } | ||
76 | |||
77 | /// <summary> | ||
70 | /// Is this prim subject to physics? Even if not, it's still solid for collision purposes. | 78 | /// Is this prim subject to physics? Even if not, it's still solid for collision purposes. |
71 | /// </summary> | 79 | /// </summary> |
72 | public override bool IsPhysical | 80 | public override bool IsPhysical |
@@ -156,7 +164,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
156 | 164 | ||
157 | private PrimitiveBaseShape _pbs; | 165 | private PrimitiveBaseShape _pbs; |
158 | private OdeScene _parent_scene; | 166 | private OdeScene _parent_scene; |
159 | 167 | ||
160 | /// <summary> | 168 | /// <summary> |
161 | /// The physics space which contains prim geometries | 169 | /// The physics space which contains prim geometries |
162 | /// </summary> | 170 | /// </summary> |
@@ -3333,7 +3341,6 @@ Console.WriteLine(" JointCreateFixed"); | |||
3333 | m_material = pMaterial; | 3341 | m_material = pMaterial; |
3334 | } | 3342 | } |
3335 | 3343 | ||
3336 | |||
3337 | private void CheckMeshAsset() | 3344 | private void CheckMeshAsset() |
3338 | { | 3345 | { |
3339 | if (_pbs.SculptEntry && !m_assetFailed && _pbs.SculptTexture != UUID.Zero) | 3346 | if (_pbs.SculptEntry && !m_assetFailed && _pbs.SculptTexture != UUID.Zero) |
@@ -3343,14 +3350,14 @@ Console.WriteLine(" JointCreateFixed"); | |||
3343 | { | 3350 | { |
3344 | RequestAssetDelegate assetProvider = _parent_scene.RequestAssetMethod; | 3351 | RequestAssetDelegate assetProvider = _parent_scene.RequestAssetMethod; |
3345 | if (assetProvider != null) | 3352 | if (assetProvider != null) |
3346 | assetProvider(_pbs.SculptTexture, MeshAssetReveived); | 3353 | assetProvider(_pbs.SculptTexture, MeshAssetReceived); |
3347 | }); | 3354 | }); |
3348 | } | 3355 | } |
3349 | } | 3356 | } |
3350 | 3357 | ||
3351 | void MeshAssetReveived(AssetBase asset) | 3358 | private void MeshAssetReceived(AssetBase asset) |
3352 | { | 3359 | { |
3353 | if (asset.Data != null && asset.Data.Length > 0) | 3360 | if (asset != null && asset.Data != null && asset.Data.Length > 0) |
3354 | { | 3361 | { |
3355 | if (!_pbs.SculptEntry) | 3362 | if (!_pbs.SculptEntry) |
3356 | return; | 3363 | return; |
@@ -3363,6 +3370,12 @@ Console.WriteLine(" JointCreateFixed"); | |||
3363 | m_taintshape = true; | 3370 | m_taintshape = true; |
3364 | _parent_scene.AddPhysicsActorTaint(this); | 3371 | _parent_scene.AddPhysicsActorTaint(this); |
3365 | } | 3372 | } |
3373 | else | ||
3374 | { | ||
3375 | m_log.WarnFormat( | ||
3376 | "[ODE PRIM]: Could not get mesh/sculpt asset {0} for {1} at {2} in {3}", | ||
3377 | _pbs.SculptTexture, Name, _position, _parent_scene.Name); | ||
3378 | } | ||
3366 | } | 3379 | } |
3367 | } | 3380 | } |
3368 | } \ No newline at end of file | 3381 | } |