00001 #ifndef __ANTI_SHADETREE_H__ 00002 #define __ANTI_SHADETREE_H_ 00003 00004 #include "antistd.h" 00005 00006 #include "liballoy/alloy.h" 00007 #include "libhemi/mesh.h" 00008 00009 typedef struct aeShaderNode_s aeShaderNode; 00010 typedef struct aeLightpropsNode_s aeLightpropsNode; 00011 typedef struct aeMultitextureNode_s aeMultitextureNode; 00012 typedef struct aePrimaryTextureNode_s aePrimaryTextureNode; 00013 00014 typedef struct 00015 { 00016 aeShaderNode* children; 00017 int num_children; 00018 } aeRootNode; 00019 00020 struct aeShaderNode_s 00021 { 00022 alloy_shader_t* shader; 00023 aeLightpropsNode* children; 00024 int num_children; 00025 }; 00026 00027 struct aeLightpropsNode_s 00028 { 00029 alloy_lightprops_t* lightprops; 00030 aeMultitextureNode* children; 00031 int num_children; 00032 }; 00033 00034 struct aeMultitextureNode_s 00035 { 00036 alloy_blend_t* blends; 00037 alloy_texture_t* multitextures[7]; 00038 aePrimaryTextureNode* children; 00039 int num_children; 00040 }; 00041 00042 struct aePrimaryTextureNode_s 00043 { 00044 alloy_texture_t* texture; 00045 00046 hemi_part_t* parts; 00047 int num_parts; 00048 }; 00049 00050 void aeInsertObject(hemi_part_t*); 00051 void aeRemoveObject(hemi_part_t*); 00052 void aeTraverseTree(aeRootNode*); 00053 void __aeDoShaderNode(aeShaderNode*); 00054 void __aeDoLightpropsNode(aeLightpropsNode*); 00055 void __aeDoMultitextureNode(aeMultitextureNode*); 00056 void __aeDoPrimaryTextureNode(aePrimaryTextureNode*); 00057 00058 #endif