C:/jkyprian/devel/lib3ds/lib3ds/node.h

00001 /* -*- c -*- */
00002 #ifndef INCLUDED_LIB3DS_NODE_H
00003 #define INCLUDED_LIB3DS_NODE_H
00004 /*
00005  * The 3D Studio File Format Library
00006  * Copyright (C) 1996-2007 by Jan Eric Kyprianidis <www.kyprianidis.com>
00007  * All rights reserved.
00008  *
00009  * This program is  free  software;  you can redistribute it and/or modify it
00010  * under the terms of the  GNU Lesser General Public License  as published by 
00011  * the  Free Software Foundation;  either version 2.1 of the License,  or (at 
00012  * your option) any later version.
00013  *
00014  * This  program  is  distributed in  the  hope that it will  be useful,  but
00015  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
00016  * or  FITNESS FOR A  PARTICULAR PURPOSE.  See the  GNU Lesser General Public  
00017  * License for more details.
00018  *
00019  * You should  have received  a copy of the GNU Lesser General Public License
00020  * along with  this program;  if not, write to the  Free Software Foundation,
00021  * Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00022  *
00023  * $Id: node.h,v 1.12 2007/06/20 17:04:09 jeh Exp $
00024  */
00025 
00026 #ifndef INCLUDED_LIB3DS_TRACKS_H
00027 #include <lib3ds/tracks.h>
00028 #endif
00029 
00030 #ifdef __cplusplus
00031 extern "C" {
00032 #endif
00033 
00038 typedef struct Lib3dsAmbientData {
00039     Lib3dsRgb col;
00040     Lib3dsLin3Track col_track;
00041 } Lib3dsAmbientData;
00042 
00047 typedef struct Lib3dsObjectData {
00048     Lib3dsVector pivot;
00049     char instance[64];
00050     Lib3dsVector bbox_min;
00051     Lib3dsVector bbox_max;
00052     Lib3dsVector pos;
00053     Lib3dsLin3Track pos_track;
00054     Lib3dsQuat rot;
00055     Lib3dsQuatTrack rot_track;
00056     Lib3dsVector scl;
00057     Lib3dsLin3Track scl_track;
00058     Lib3dsFloat morph_smooth;
00059     char morph[64];
00060     Lib3dsMorphTrack morph_track;
00061     Lib3dsBool hide;
00062     Lib3dsBoolTrack hide_track;
00063 } Lib3dsObjectData;
00064 
00069 typedef struct Lib3dsCameraData {
00070     Lib3dsVector pos;
00071     Lib3dsLin3Track pos_track;
00072     Lib3dsFloat fov;
00073     Lib3dsLin1Track fov_track;
00074     Lib3dsFloat roll;
00075     Lib3dsLin1Track roll_track;
00076 } Lib3dsCameraData;
00077 
00082 typedef struct Lib3dsTargetData {
00083     Lib3dsVector pos;
00084     Lib3dsLin3Track pos_track;
00085 } Lib3dsTargetData;
00086 
00091 typedef struct Lib3dsLightData {
00092     Lib3dsVector pos;
00093     Lib3dsLin3Track pos_track;
00094     Lib3dsRgb col;
00095     Lib3dsLin3Track col_track;
00096     Lib3dsFloat hotspot;
00097     Lib3dsLin1Track hotspot_track;
00098     Lib3dsFloat falloff;
00099     Lib3dsLin1Track falloff_track;
00100     Lib3dsFloat roll;
00101     Lib3dsLin1Track roll_track;
00102 } Lib3dsLightData;
00103 
00108 typedef struct Lib3dsSpotData {
00109     Lib3dsVector pos;
00110     Lib3dsLin3Track pos_track;
00111 } Lib3dsSpotData;
00112 
00117 typedef union Lib3dsNodeData {
00118     Lib3dsAmbientData ambient;
00119     Lib3dsObjectData object;
00120     Lib3dsCameraData camera;
00121     Lib3dsTargetData target;
00122     Lib3dsLightData light;
00123     Lib3dsSpotData spot;
00124 } Lib3dsNodeData;
00125 
00129 #define LIB3DS_NO_PARENT 65535
00130 
00135 struct Lib3dsNode {
00136     Lib3dsUserData user;
00137     Lib3dsNode *next;
00138     Lib3dsNode *childs;
00139     Lib3dsNode *parent;
00140     Lib3dsNodeTypes type;
00141     Lib3dsWord node_id;
00142     char name[64];
00143     Lib3dsWord flags1;
00144     Lib3dsWord flags2;
00145     Lib3dsWord parent_id;
00146     Lib3dsMatrix matrix;
00147     Lib3dsNodeData data;
00148 };
00149 
00154 typedef enum {
00155   LIB3DS_HIDDEN = 0x800
00156 } Lib3dsNodeFlags1;
00157 
00162 typedef enum {
00163   LIB3DS_SHOW_PATH = 0x1,
00164   LIB3DS_SMOOTHING = 0x2,
00165   LIB3DS_MOTION_BLUR = 0x10,
00166   LIB3DS_MORPH_MATERIALS = 0x40
00167 } Lib3dsNodeFlags2;
00168 
00169 extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_ambient();
00170 extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_object();
00171 extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_camera();
00172 extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_target();
00173 extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_light();
00174 extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_spot();
00175 extern LIB3DSAPI void lib3ds_node_free(Lib3dsNode *node);
00176 extern LIB3DSAPI void lib3ds_node_eval(Lib3dsNode *node, Lib3dsFloat t);
00177 extern LIB3DSAPI Lib3dsNode* lib3ds_node_by_name(Lib3dsNode *node, const char* name,
00178   Lib3dsNodeTypes type);
00179 extern LIB3DSAPI Lib3dsNode* lib3ds_node_by_id(Lib3dsNode *node, Lib3dsWord node_id);
00180 extern LIB3DSAPI void lib3ds_node_dump(Lib3dsNode *node, Lib3dsIntd level);
00181 extern LIB3DSAPI Lib3dsBool lib3ds_node_read(Lib3dsNode *node, Lib3dsFile *file, Lib3dsIo *io);
00182 extern LIB3DSAPI Lib3dsBool lib3ds_node_write(Lib3dsNode *node, Lib3dsFile *file, Lib3dsIo *io);
00183 
00184 #ifdef __cplusplus
00185 }
00186 #endif
00187 #endif
00188 

Hosted by
SourceForge.net Logo
Generated at Wed Jun 20 18:51:36 2007 by Doxygen 1.5.2