aboutsummaryrefslogtreecommitdiff
path: root/tool_src/BspLib/AodOutput.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
committerFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
commitc068f22329d5cc722622a2183bbb22eef2093df7 (patch)
tree12d56c1aede67988a55e241364606bfbb4dba933 /tool_src/BspLib/AodOutput.cpp
downloadopenparsec-c068f22329d5cc722622a2183bbb22eef2093df7.tar.xz
openparsec-c068f22329d5cc722622a2183bbb22eef2093df7.zip
initial importHEADmain
Diffstat (limited to 'tool_src/BspLib/AodOutput.cpp')
-rw-r--r--tool_src/BspLib/AodOutput.cpp106
1 files changed, 106 insertions, 0 deletions
diff --git a/tool_src/BspLib/AodOutput.cpp b/tool_src/BspLib/AodOutput.cpp
new file mode 100644
index 0000000..316cf9a
--- /dev/null
+++ b/tool_src/BspLib/AodOutput.cpp
@@ -0,0 +1,106 @@
+//-----------------------------------------------------------------------------
+// BSPLIB MODULE: AodOutput.cpp
+//
+// Copyright (c) 1996-1997 by Markus Hadwiger
+// All Rights Reserved.
+//-----------------------------------------------------------------------------
+
+// bsplib header files
+#include "AodOutput.h"
+#include "BspObject.h"
+#include "BspTool.h"
+#include "ObjectAodFormat.h"
+
+
+BSPLIB_NAMESPACE_BEGIN
+
+
+// construct AodOutput object -------------------------------------------------
+//
+AodOutput::AodOutput( BspObjectList objectlist, const char *filename ) :
+ SingleOutput( objectlist, BspTool::ChangeExtension( filename, AOD_FILE_EXTENSION ) )
+{
+}
+
+
+// construct AodOutput object using an InputData3D object ---------------------
+//
+AodOutput::AodOutput( const InputData3D& inputdata ) :
+ SingleOutput( inputdata.getObjectList(),
+ BspTool::ChangeExtension( inputdata.getFileName(), AOD_FILE_EXTENSION ) )
+{
+ // get pointer to "real" input object
+ InputData3D *inputobj = inputdata.getRealObject();
+
+ // try to isolate the AodFormat part of the input object
+ AodFormat *aodformat = dynamic_cast<AodFormat*>(inputobj);
+
+ // copy over if cast succeeded
+ if ( aodformat != NULL ) {
+
+ *(AodFormat *)this = *aodformat;
+
+ } else {
+
+ // try to isolate the SingleFormat part of the input object
+ SingleFormat *singleformat = dynamic_cast<SingleFormat*>(inputobj);
+
+ // copy over if cast succeeded
+ if ( singleformat != NULL )
+ *(SingleFormat *)this = *singleformat;
+ }
+}
+
+
+// write outputfile before destruction ----------------------------------------
+//
+AodOutput::~AodOutput()
+{
+ if ( m_output.Status() == SYSTEM_IO_OK )
+ WriteOutputFile();
+}
+
+
+// assignment copies only the AodFormat part of the object --------------------
+//
+AodOutput& AodOutput::operator =( const AodOutput& copyobj )
+{
+ *(AodFormat *)this = copyobj;
+ return *this;
+}
+
+
+// write '.aod' file for this object ------------------------------------------
+//
+int AodOutput::WriteOutputFile()
+{
+ sprintf( line, "Writing ascii object data to \"%s\"...\n", (const char *) m_filename );
+ InfoMessage( line );
+
+ sprintf( line, "%s\n\n", AOD_SIGNATURE_1_1 );
+ m_output.WriteLine( line );
+
+ // write bsplib banner to file and init output data
+ SingleOutput::InitOutput();
+
+ // create 3-D object knowing about '.aod' format
+ ObjectAodFormat obj( *m_baseobject, *this );
+
+ // write attribute lists
+ obj.WriteVertexList( m_output );
+ obj.WriteFaceList( m_output );
+ obj.WriteNormals( m_output );
+ obj.WriteFaceProperties( m_output );
+ obj.WriteMappingList( m_output );
+ obj.WriteTextureList( m_output );
+
+ // write common part
+ SingleOutput::WriteOutputFile();
+
+ return m_output.Status();
+}
+
+
+BSPLIB_NAMESPACE_END
+
+//-----------------------------------------------------------------------------