From 56a55c8516a1077d7105312cef89809db58d78cd Mon Sep 17 00:00:00 2001 From: Pyogenics Date: Wed, 30 Apr 2025 18:45:17 +0100 Subject: [PATCH] Initial version 3 export support --- io_scene_a3d/A3D.py | 91 +++++++++++++++++++++++++++++- io_scene_a3d/A3DBlenderExporter.py | 31 ++++++++-- io_scene_a3d/A3DObjects.py | 55 ++++++++++++++++-- io_scene_a3d/IOTools.py | 11 +++- 4 files changed, 175 insertions(+), 13 deletions(-) diff --git a/io_scene_a3d/A3D.py b/io_scene_a3d/A3D.py index 97b685b..8725ec6 100644 --- a/io_scene_a3d/A3D.py +++ b/io_scene_a3d/A3D.py @@ -139,7 +139,19 @@ class A3D: stream.read(padding) def writeRootBlock3(self, stream): - raise RuntimeError("Version 3 files are not supported yet") + buffer = BytesIO() + + # Write data to the buffer + print("Writing root block") + self.writeMaterialBlock3(buffer) + self.writeMeshBlock3(buffer) + self.writeTransformBlock3(buffer) + self.writeObjectBlock3(buffer) + + # Write buffer to stream + packStream("<2I", stream, A3D_ROOTBLOCK_SIGNATURE, buffer.tell()) + buffer.seek(0, 0) + stream.write(buffer.read()) ''' Material data blocks @@ -188,6 +200,24 @@ class A3D: padding = calculatePadding(length) stream.read(padding) + def writeMaterialBlock3(self, stream): + buffer = BytesIO() + + # Write data to the buffer + print("Writing material block") + packStream("