Browse Source

fix create datablock for physicsshapes.

John3 9 năm trước cách đây
mục cha
commit
17df1362bd
1 tập tin đã thay đổi với 17 bổ sung10 xóa
  1. 17 10
      Engine/source/T3D/physics/physicsShape.cpp

+ 17 - 10
Engine/source/T3D/physics/physicsShape.cpp

@@ -271,6 +271,8 @@ bool PhysicsShapeData::preload( bool server, String &errorBuffer )
 {
    if ( !Parent::preload( server, errorBuffer ) )
       return false;
+   
+   if( server ) return true;
 
    // If we don't have a physics plugin active then
    // we have to fail completely.
@@ -280,19 +282,24 @@ bool PhysicsShapeData::preload( bool server, String &errorBuffer )
       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.
    if ( !colShape )