Browse Source

Merge pull request #1690 from John3/fixDatablockPhysicsShape

fix create datablock for physicsshapes.
Anis 9 years ago
parent
commit
88ac03cce0
1 changed files with 16 additions and 11 deletions
  1. 16 11
      Engine/source/T3D/physics/physicsShape.cpp

+ 16 - 11
Engine/source/T3D/physics/physicsShape.cpp

@@ -271,7 +271,7 @@ bool PhysicsShapeData::preload( bool server, String &errorBuffer )
 {
 {
    if ( !Parent::preload( server, errorBuffer ) )
    if ( !Parent::preload( server, errorBuffer ) )
       return false;
       return false;
-
+   
    // If we don't have a physics plugin active then
    // If we don't have a physics plugin active then
    // we have to fail completely.
    // we have to fail completely.
    if ( !PHYSICSMGR )
    if ( !PHYSICSMGR )
@@ -280,19 +280,24 @@ bool PhysicsShapeData::preload( bool server, String &errorBuffer )
       return false;
       return false;
    }
    }
 
 
-   if ( !shapeName || !shapeName[0] ) 
+   if( shapeName && shapeName[0] != '\0' && !bool(shape) )
    {
    {
-      errorBuffer = "PhysicsShapeData::preload - No shape name defined.";
-      return false;
-   }
+      // Load the shape.
+      shape = ResourceManager::get().load(shapeName);
+      if( bool(shape) == false )
+      {
+         errorBuffer = String::ToString("PhysicsShapeData::load: Couldn't load shape \"%s\"", shapeName);
+         return false;
+      }
+      else
+      {
+         TSShapeInstance* pDummy = new TSShapeInstance(shape, !server);
+         delete pDummy;
+      }
 
 
-   // Load the shape.
-   shape = ResourceManager::get().load( shapeName );
-   if ( bool(shape) == false )
-   {
-      errorBuffer = String::ToString( "PhysicsShapeData::preload - Unable to load shape '%s'.", shapeName );
-      return false;
    }
    }
+   else
+      return false;
 
 
    // Prepare the shared physics collision shape.
    // Prepare the shared physics collision shape.
    if ( !colShape )
    if ( !colShape )