</pre><p>Unions share a lot with enums. </p><preclass="fragment">struct Vec3;
struct Monster;
</pre><p>Predeclare all datatypes since there may be circular references. </p><preclass="fragment">MANUALLY_ALIGNED_STRUCT(4) Vec3 {
</pre><p>Predeclare all data types since circular references between types are allowed (circular references between object are not, though). </p><preclass="fragment">MANUALLY_ALIGNED_STRUCT(4) Vec3 {