Selaa lähdekoodia

Fixed cloning a model that contains materials that are bound to a mesh part.

Darryl Gough 13 vuotta sitten
vanhempi
sitoutus
43b8418323
1 muutettua tiedostoa jossa 14 lisäystä ja 1 poistoa
  1. 14 1
      gameplay/src/Model.cpp

+ 14 - 1
gameplay/src/Model.cpp

@@ -393,9 +393,22 @@ Model* Model::clone(NodeCloneContext &context)
             GP_ERROR("Failed to clone material for model.");
             GP_ERROR("Failed to clone material for model.");
             return model;
             return model;
         }
         }
-        model->setMaterial(materialClone); // TODO: Don't forget material parts
+        model->setMaterial(materialClone);
         materialClone->release();
         materialClone->release();
     }
     }
+    if (_partMaterials)
+    {
+        GP_ASSERT(_partCount == model->_partCount);
+        for (unsigned int i = 0; i < _partCount; ++i)
+        {
+            if (_partMaterials[i])
+            {
+                Material* materialClone = _partMaterials[i]->clone(context);
+                model->setMaterial(materialClone, i);
+                materialClone->release();
+            }
+        }
+    }
     return model;
     return model;
 }
 }