summaryrefslogtreecommitdiff
path: root/3dc/win95/TOOLCHNK.CPP
diff options
context:
space:
mode:
Diffstat (limited to '3dc/win95/TOOLCHNK.CPP')
-rw-r--r--3dc/win95/TOOLCHNK.CPP41
1 files changed, 41 insertions, 0 deletions
diff --git a/3dc/win95/TOOLCHNK.CPP b/3dc/win95/TOOLCHNK.CPP
new file mode 100644
index 0000000..b4a897b
--- /dev/null
+++ b/3dc/win95/TOOLCHNK.CPP
@@ -0,0 +1,41 @@
+#include "toolchnk.hpp"
+
+#ifdef cencon
+#define new my_new
+#endif
+
+//macro for helping to force inclusion of chunks when using libraries
+FORCE_CHUNK_INCLUDE_IMPLEMENT(toolchnk)
+
+RIF_IMPLEMENT_DYNCREATE("CAMORIGN",Camera_Origin_Chunk)
+
+Camera_Origin_Chunk::Camera_Origin_Chunk(Chunk_With_Children* parent)
+:Chunk(parent,"CAMORIGN")
+{
+ location.x=0;
+ location.y=0;
+ location.z=0;
+ ChunkMatrix identity={1,0,0,0,1,0,0,0,1};
+ orientation=identity;
+}
+
+Camera_Origin_Chunk::Camera_Origin_Chunk(Chunk_With_Children* parent,const char* data,size_t )
+:Chunk(parent,"CAMORIGN")
+{
+ location=*(ChunkVector*)data;
+ data+=sizeof(ChunkVector);
+ orientation=*(ChunkMatrix*)data;
+}
+
+void Camera_Origin_Chunk::fill_data_block(char * data_start)
+{
+ strncpy (data_start, identifier, 8);
+ data_start += 8;
+ *((int *) data_start) = chunk_size;
+ data_start += 4;
+
+ *(ChunkVector*)data_start=location;
+ data_start+=sizeof(ChunkVector);
+ *(ChunkMatrix*)data_start=orientation;
+}
+