home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 March / ENTER.ISO / files / fwp-0.0.6-win32-installer.exe / node.h < prev    next >
Encoding:
C/C++ Source or Header  |  2003-08-23  |  4.4 KB  |  170 lines

  1. /* -*- c -*- */
  2. #ifndef INCLUDED_LIB3DS_NODE_H
  3. #define INCLUDED_LIB3DS_NODE_H
  4. /*
  5.  * The 3D Studio File Format Library
  6.  * Copyright (C) 1996-2001 by J.E. Hoffmann <je-h@gmx.net>
  7.  * All rights reserved.
  8.  *
  9.  * This program is  free  software;  you can redistribute it and/or modify it
  10.  * under the terms of the  GNU Lesser General Public License  as published by 
  11.  * the  Free Software Foundation;  either version 2.1 of the License,  or (at 
  12.  * your option) any later version.
  13.  *
  14.  * This  program  is  distributed in  the  hope that it will  be useful,  but
  15.  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  16.  * or  FITNESS FOR A  PARTICULAR PURPOSE.  See the  GNU Lesser General Public  
  17.  * License for more details.
  18.  *
  19.  * You should  have received  a copy of the GNU Lesser General Public License
  20.  * along with  this program;  if not, write to the  Free Software Foundation,
  21.  * Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  22.  *
  23.  * $Id: node.h,v 1.7 2001/07/07 19:05:30 jeh Exp $
  24.  */
  25.  
  26. #ifndef INCLUDED_LIB3DS_TRACKS_H
  27. #include "lib3ds/tracks.h"
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. /*!
  35.  * Scene graph ambient color node data
  36.  * \ingroup node
  37.  */
  38. typedef struct _Lib3dsAmbientData {
  39.     Lib3dsRgb col;
  40.     Lib3dsLin3Track col_track;
  41. } Lib3dsAmbientData;
  42.  
  43. /*!
  44.  * Scene graph object instance node data
  45.  * \ingroup node
  46.  */
  47. typedef struct _Lib3dsObjectData {
  48.     Lib3dsVector pivot;
  49.     char instance[64];
  50.     Lib3dsVector bbox_min;
  51.     Lib3dsVector bbox_max;
  52.     Lib3dsVector pos;
  53.     Lib3dsLin3Track pos_track;
  54.     Lib3dsQuat rot;
  55.     Lib3dsQuatTrack rot_track;
  56.     Lib3dsVector scl;
  57.     Lib3dsLin3Track scl_track;
  58.     Lib3dsFloat morph_smooth;
  59.     char morph[64];
  60.     Lib3dsMorphTrack morph_track;
  61.     Lib3dsBool hide;
  62.     Lib3dsBoolTrack hide_track;
  63. } Lib3dsObjectData;
  64.  
  65. /*!
  66.  * Scene graph camera node data
  67.  * \ingroup node
  68.  */
  69. typedef struct _Lib3dsCameraData {
  70.     Lib3dsVector pos;
  71.     Lib3dsLin3Track pos_track;
  72.     Lib3dsFloat fov;
  73.     Lib3dsLin1Track fov_track;
  74.     Lib3dsFloat roll;
  75.     Lib3dsLin1Track roll_track;
  76. } Lib3dsCameraData;
  77.  
  78. /*!
  79.  * Scene graph camera target node data
  80.  * \ingroup node
  81.  */
  82. typedef struct _Lib3dsTargetData {
  83.     Lib3dsVector pos;
  84.     Lib3dsLin3Track pos_track;
  85. } Lib3dsTargetData;
  86.  
  87. /*!
  88.  * Scene graph light node data
  89.  * \ingroup node
  90.  */
  91. typedef struct _Lib3dsLightData {
  92.     Lib3dsVector pos;
  93.     Lib3dsLin3Track pos_track;
  94.     Lib3dsRgb col;
  95.     Lib3dsLin3Track col_track;
  96.     Lib3dsFloat hotspot;
  97.     Lib3dsLin1Track hotspot_track;
  98.     Lib3dsFloat falloff;
  99.     Lib3dsLin1Track falloff_track;
  100.     Lib3dsFloat roll;
  101.     Lib3dsLin1Track roll_track;
  102. } Lib3dsLightData;
  103.  
  104. /*!
  105.  * Scene graph spotlight target node data
  106.  * \ingroup node
  107.  */
  108. typedef struct _Lib3dsSpotData {
  109.     Lib3dsVector pos;
  110.     Lib3dsLin3Track pos_track;
  111. } Lib3dsSpotData;
  112.  
  113. /*!
  114.  * Scene graph node data union
  115.  * \ingroup node
  116.  */
  117. typedef union _Lib3dsNodeData {
  118.     Lib3dsAmbientData ambient;
  119.     Lib3dsObjectData object;
  120.     Lib3dsCameraData camera;
  121.     Lib3dsTargetData target;
  122.     Lib3dsLightData light;
  123.     Lib3dsSpotData spot;
  124. } Lib3dsNodeData;
  125.  
  126. /*!
  127.  * \ingroup node
  128.  */
  129. #define LIB3DS_NO_PARENT 65535
  130.  
  131. /*!
  132.  * Scene graph node
  133.  * \ingroup node
  134.  */
  135. struct _Lib3dsNode {
  136.     Lib3dsUserData user;
  137.     Lib3dsNode *next;\
  138.     Lib3dsNode *childs;\
  139.     Lib3dsNode *parent;\
  140.     Lib3dsNodeTypes type;\
  141.     Lib3dsWord node_id;\
  142.     char name[64];\
  143.     Lib3dsWord flags1;\
  144.     Lib3dsWord flags2;\
  145.     Lib3dsWord parent_id;
  146.     Lib3dsMatrix matrix;
  147.     Lib3dsNodeData data;
  148. };
  149.  
  150. extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_ambient();
  151. extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_object();
  152. extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_camera();
  153. extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_target();
  154. extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_light();
  155. extern LIB3DSAPI Lib3dsNode* lib3ds_node_new_spot();
  156. extern LIB3DSAPI void lib3ds_node_free(Lib3dsNode *node);
  157. extern LIB3DSAPI void lib3ds_node_eval(Lib3dsNode *node, Lib3dsFloat t);
  158. extern LIB3DSAPI Lib3dsNode* lib3ds_node_by_name(Lib3dsNode *node, const char* name,
  159.   Lib3dsNodeTypes type);
  160. extern LIB3DSAPI Lib3dsNode* lib3ds_node_by_id(Lib3dsNode *node, Lib3dsWord node_id);
  161. extern LIB3DSAPI void lib3ds_node_dump(Lib3dsNode *node, Lib3dsIntd level);
  162. extern LIB3DSAPI Lib3dsBool lib3ds_node_read(Lib3dsNode *node, Lib3dsFile *file, Lib3dsIo *io);
  163. extern LIB3DSAPI Lib3dsBool lib3ds_node_write(Lib3dsNode *node, Lib3dsFile *file, Lib3dsIo *io);
  164.  
  165. #ifdef __cplusplus
  166. };
  167. #endif
  168. #endif
  169.  
  170.