0032171: Data Exchange - RWGltf_TriangulationReader doesn't copy cached bounding box IR-2021-02-26
authorosa <osa@opencascade.com>
Thu, 25 Feb 2021 16:18:12 +0000 (19:18 +0300)
committerbugmaster <bugmaster@opencascade.com>
Fri, 26 Feb 2021 14:31:02 +0000 (17:31 +0300)
Save cached bounding box in loaded triangulation getting it from "proxy" late-loaded object.

src/RWGltf/RWGltf_TriangulationReader.cxx
src/RWGltf/RWGltf_TriangulationReader.hxx

index de4db86..25c7534 100644 (file)
@@ -14,6 +14,7 @@
 
 #include <RWGltf_TriangulationReader.hxx>
 
+#include <RWGltf_GltfLatePrimitiveArray.hxx>
 #include <RWMesh_CoordinateSystemConverter.hxx>
 #include <Standard_ReadBuffer.hxx>
 
@@ -85,6 +86,24 @@ Handle(Poly_Triangulation) RWGltf_TriangulationReader::result()
   return myTriangulation;
 }
 
+// =======================================================================
+// function : load
+// purpose  :
+// =======================================================================
+bool RWGltf_TriangulationReader::load (const Handle(RWGltf_GltfLatePrimitiveArray)& theMesh,
+                                       const Handle(OSD_FileSystem)& theFileSystem)
+{
+  if (!RWGltf_PrimitiveArrayReader::load (theMesh, theFileSystem))
+  {
+    return false;
+  }
+  if (!theMesh->CachedMinMax().IsVoid())
+  {
+    myTriangulation->SetCachedMinMax (theMesh->CachedMinMax());
+  }
+  return true;
+}
+
 // =======================================================================
 // function : readBuffer
 // purpose  :
index a1680c0..3237710 100644 (file)
@@ -34,6 +34,10 @@ public:
 
 protected:
 
+  //! Load primitive array.
+  Standard_EXPORT virtual bool load (const Handle(RWGltf_GltfLatePrimitiveArray)& theMesh,
+                                     const Handle(OSD_FileSystem)& theFileSystem) Standard_OVERRIDE;
+
   //! Create Poly_Triangulation from collected data
   Standard_EXPORT virtual Handle(Poly_Triangulation) result() Standard_OVERRIDE;