+/* Odats: Odats consist of the object data necessary for
+ each object. Odats are sometimes referred to as archetypes
+ at compile-time, in order to distinguish the difference from
+ a runtime object and a compile-time object.
+ TODO: Need more info about objects at runtime, to described
+ the reasoning behind odat structure at compile-time*/
+
+/* Each set has a quad_list or a list of quads. The quad_list
+ is the ? */
+struct quad {
+ int x, y, z;
+ uint64_t ref_id; //rgba
+};
+
+struct root {
+ int x, y, z;
+};
+
+struct odat {
+ char name[32];
+ int vdat_id;
+ int cdat_idx;
+ int hitbox;
+ struct root root;
+ struct ref* refp; /* pointer to it's ref on ref_list */
+ int num_quads;
+ struct quad quad_list[MAX_QUADS];
+};
+struct odat* odat_buf[PTRS_IN_PAGE];
+int num_odats = 0;
+int curr_max_odats = PTRS_IN_PAGE;
+
+/* A framesheet is a grouping of animation frames in
+ a single direction (N,W,S,E) */
+struct framesheet {
+ int width;
+ int height;
+ int num_frames;
+ void* frames[MAX_FRAMES];
+};
+
+/* A model is a collection of framesheets for every
+ direction (N,W,S,E,NW,NE,SW,SE)*/
+/* NAMED spritesheet */
+struct model {
+ char name[32];
+ struct framesheet spritesheet[8]; //one for each
+};
+
+/* Vdat: Vdats are the video data of each object. They can not be
+ created as a stand alone object (because they consist solely
+ of animation information and not the skeleton on which the
+ animation manipulates). Vdats have a list of models for every
+ animation that the vdats odat can do for that vdat*/
+struct vdat {
+ struct odat* creator; //pointer to odat that made this vdat
+ int num_models;
+ struct model model_list[MAX_MODELS];
+};
+
+struct vdat* vdat_buf[PTRS_IN_PAGE];
+int num_vdats = 0;
+int curr_max_vdats = PTRS_IN_PAGE;
+
+
+/* The initalization function of the IR. Mallocs the
+ first c/v/odat and the first links and refs and
+ inits the cdat_stack */