home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / More Source / C⁄C++ / Peter's Final Project / src / object.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-10  |  4.5 KB  |  120 lines  |  [TEXT/KAHL]

  1. /*
  2.  *  Peter's Final Project -- A texture mapping demonstration
  3.  *  © 1995, Peter Mattis
  4.  *
  5.  *  E-mail:
  6.  *  petm@soda.csua.berkeley.edu
  7.  *
  8.  *  Snail-mail:
  9.  *   Peter Mattis
  10.  *   557 Fort Laramie Dr.
  11.  *   Sunnyvale, CA 94087
  12.  *
  13.  *  Avaible from:
  14.  *  http://www.csua.berkeley.edu/~petm/final.html
  15.  *
  16.  *  This program is free software; you can redistribute it and/or modify
  17.  *  it under the terms of the GNU General Public License as published by
  18.  *  the Free Software Foundation; either version 2 of the License, or
  19.  *  (at your option) any later version.
  20.  *
  21.  *  This program is distributed in the hope that it will be useful,
  22.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  23.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  24.  *  GNU General Public License for more details.
  25.  *
  26.  *  You should have received a copy of the GNU General Public License
  27.  *  along with this program; if not, write to the Free Software
  28.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  29.  */
  30.  
  31. #ifndef __OBJECT_H__
  32. #define __OBJECT_H__
  33.  
  34. #include "camera.h"
  35. #include "list.h"
  36. #include "matrix.vector.h"
  37. #include "type.defs.h"
  38.  
  39. OBJECT make_object (void);
  40. void free_object (OBJECT);
  41.  
  42. void object_init (OBJECT);
  43. void object_update_camera (OBJECT);
  44.  
  45. OBJECTS objects_append_object (OBJECTS, OBJECT);
  46. OBJECTS objects_prepend_object (OBJECTS, OBJECT);
  47. OBJECTS objects_remove_object (OBJECTS, OBJECT);
  48. void free_objects (OBJECTS);
  49.  
  50. long object_mem_usage (void);
  51.  
  52. #define object_id(o)        ((o)->id)
  53. #define object_val(o)       ((o)->val)
  54. #define object_faces(o)     ((o)->faces)
  55. #define object_matrix(o)    ((o)->matrix)
  56. #define object_red(o)       ((o)->red)
  57. #define object_green(o)     ((o)->green)
  58. #define object_blue(o)      ((o)->blue)
  59. #define object_radius(o)    ((o)->radius)
  60. #define object_pos(o)       ((o)->pos)
  61. #define object_dir(o)       ((o)->dir)
  62. #define object_pos_vel(o)   ((o)->pos_vel)
  63. #define object_dir_vel(o)   ((o)->dir_vel)
  64. #define object_pos_drag(o)  ((o)->pos_drag)
  65. #define object_dir_drag(o)  ((o)->dir_drag)
  66. #define object_bounce(o)    ((o)->bounce)
  67. #define object_camera(o)    ((o)->camera)
  68. #define object_sector(o)    ((o)->sector)
  69. #define object_sectors(o)   ((o)->sectors)
  70. #define object_move(o)      ((o)->move_func)
  71. #define object_data(o)      ((o)->data)
  72.  
  73. #define object_pos_x(o)   (vector_x(object_pos(o)))
  74. #define object_pos_y(o)   (vector_y(object_pos(o)))
  75. #define object_pos_z(o)   (vector_z(object_pos(o)))
  76. #define object_pos_w(o)   (vector_w(object_pos(o)))
  77.  
  78. #define object_dir_x(o)   (vector_x(object_dir(o)))
  79. #define object_dir_y(o)   (vector_y(object_dir(o)))
  80. #define object_dir_z(o)   (vector_z(object_dir(o)))
  81. #define object_dir_w(o)   (vector_w(object_dir(o)))
  82.  
  83. #define set_object_id(o, k)       (object_id(o) = (k))
  84. #define set_object_val(o, k)      (object_val(o) = (k))
  85. #define set_object_faces(o, k)    (object_faces(o) = (k))
  86. #define set_object_red(o, k)      (object_red(o) = (k))
  87. #define set_object_green(o, k)    (object_green(o) = (k))
  88. #define set_object_blue(o, k)     (object_blue(o) = (k))
  89. #define set_object_pos_vel(o, k)  (object_pos_vel(o) = (k))
  90. #define set_object_dir_vel(o, k)  (object_dir_vel(o) = (k))
  91. #define set_object_pos_drag(o, k) (object_pos_drag(o) = (k))
  92. #define set_object_dir_drag(o, k) (object_dir_drag(o) = (k))
  93. #define set_object_bounce(o, k)   (object_bounce(o) = (k))
  94. #define set_object_matrix(o, k)   (object_matrix(o) = (k))
  95. #define set_object_radius(o, k)   (object_radius(o) = (k))
  96. #define set_object_camera(o, k)   (object_camera(o) = (k))
  97. #define set_object_sector(o, k)   (object_sector(o) = (k))
  98. #define set_object_sectors(o, k)  (object_sectors(o) = (k))
  99. #define set_object_move(o, k)     (object_move(o) = (k))
  100. #define set_object_data(o, k)     (object_data(o) = (k))
  101.  
  102. #define set_object_pos_x(o, k)    (object_pos_x(o) = (k))
  103. #define set_object_pos_y(o, k)    (object_pos_y(o) = (k))
  104. #define set_object_pos_z(o, k)    (object_pos_z(o) = (k))
  105. #define set_object_pos_w(o, k)    (object_pos_w(o) = (k))
  106.  
  107. #define set_object_dir_x(o, k)    (object_dir_x(o) = (k))
  108. #define set_object_dir_y(o, k)    (object_dir_y(o) = (k))
  109. #define set_object_dir_z(o, k)    (object_dir_z(o) = (k))
  110. #define set_object_dir_w(o, k)    (object_dir_w(o) = (k))
  111.  
  112. #define objects_first(o)     ((OBJECT) list_datum((LIST) o))
  113. #define objects_rest(o)      ((OBJECTS) list_next((LIST) o))
  114.  
  115. #define set_objects_first(o, k)  (set_list_datum((LIST) o, k))
  116. #define set_objects_rest(o, k)   (set_list_next((LIST) o, k))
  117.  
  118. #define objects_add_object  objects_prepend_object
  119.  
  120. #endif /* __OBJECT_H__ */