DI-Guy SDK Documentation  13.1
diguyGraphicsShape.h
Go to the documentation of this file.
1 
2 /*********************************************************************
3  ** Copyright (c) 1992-2015 VT MAK
4  ** All rights reserved.
5  *********************************************************************/
6 
7 /*********************************************************************/
14 #ifndef __diguyGraphicsShape_H
15 #define __diguyGraphicsShape_H
16 
17 #ifdef SWIG
18 %module diguyGraphicsShape
19 #else
20 #define CPLUSPLUS_ONLY
21 #endif
22 
23 #ifdef CPLUSPLUS_ONLY
24 #include <diguy_constants.h>
25 
26 class bdiShape;
27 class diguyCharacter;
28 class diguyGraphicsFile;
29 class diguyGraphicsLink;
30 class diguyGraphicsMesh;
31 class diguyGraphicsShape;
32 class diguyGraphicsState;
33 
34 
35 /****************************************************************************/
36 
37 #endif
38 
39 #include <declspec_diguy.h>
40 
54 /****************************************************************************/
55 class BDI_DECLSPEC_diguy diguyGraphicsShape
56 {
57 
58 public:
59 
60 
61 /*****************************************************************************/
74  /*l
75  *b Description:
76  **
77  ** This function returns the name of the shape. The returned pointer
78  ** will never be NULL.
79  **
80  *b Returns:
81  **
82  ** name of the shape as C string
83  */
84  const char* get_name();
85 
86  /*l
87  *b Description:
88  **
89  ** All shapes are assigned a unique identifier, or uid. This function
90  ** returns this shape's uid.
91  **
92  ** *Note*: unique identifiers can change between DI-Guy runs.
93  **
94  *b Returns:
95  **
96  ** unique identifier of object
97  */
98  long get_uid();
99 
100  /*l
101  *b Description:
102  **
103  ** This function returns a pointer to the diguyCharacter to which this
104  ** shape belongs.
105  **
106  *b Returns:
107  **
108  ** pointer of type diguyCharacter
109  */
110  diguyCharacter* get_character();
111 
112 
113  /*l
114  *b Description:
115  **
116  ** This function returns the name of the shape set of which this shape
117  ** is a part.
118  **
119  ** A shape set is a collection of shapes that are related, coming from
120  ** a set of related geometry files, sometimes one file per LOD.
121  **
122  ** A shape is a collection of parts each representing the same thing
123  ** at varying levels of detail.
124  **
125  ** For example, in its config files DI-Guy has a shape set named
126  ** "firefighter", which references five OpenFlight files named
127  ** firefighter_LOD1.flt through firefighter_LOD5.flt. The firefighter
128  ** shape set contains separate shapes for the head, arms, legs, etc.,
129  ** at five different levels of detail.
130  **
131  ** Use the function get_shape_set_filename_for_lod() to get the actual
132  ** geometry filenames that should be used for each LOD.
133  **
134  *b Returns:
135  **
136  ** shape set of shape as C string
137  */
138  const char* get_shape_set_name();
139 
140  /*l
141  *b Description:
142  **
143  ** This function returns the name of the shape. This name identifies
144  ** which pieces of geometry out of the shape set should comprise the
145  ** shape.
146  **
147  *b Returns:
148  **
149  ** shape name of shape as C string
150  */
151  const char* get_shape_set_shape_name();
152 
153  /*l
154  *b Description:
155  **
156  ** This function returns the name of the link to which this shape is
157  ** typically attached.
158  **
159  ** Use the function get_link() to get a pointer to the actual link to
160  ** which this shape is attached.
161  **
162  *b Returns:
163  **
164  ** name of recommended attachment link as C string
165  */
166  const char* get_recommended_attachment_link_name();
167 
168  /*l
169  *b Description:
170  **
171  ** This function returns how many LODs this shape has. This will be a
172  ** number between 1 and 7.
173  **
174  *b Returns:
175  **
176  ** number of LODs
177  */
178  int get_num_lods();
179 
180 #ifdef CPLUSPLUS_ONLY
181 
182  /*l
183  *b Description:
184  **
185  ** This function returns the LOD ranges of this shape. The returned
186  ** pointer points to an array of eight floats, which represent ranges
187  ** in meters at which LODs should be shown.
188  **
189  *b Returns:
190  **
191  ** LOD ranges
192  **
193  *b Only Callable From C++
194  */
195  float* get_lod_ranges();
196 
197 #endif
198 
199  /*l
200  *b Description:
201  **
202  ** This function returns the most recent lod setting as set by
203  ** set_graphics_lod(), or as set by
204  ** diguyCharacter::set_graphics_lod().
205  **
206  *b Returns:
207  **
208  ** LOD index; integer from 1 to get_num_lods()
209  */
210  int get_graphics_lod();
211 
212  /*l
213  *b Description:
214  **
215  ** This function returns the filename of the geometry file from which
216  ** the shape is read for a specific LOD.
217  **
218  *b Arguments:
219  **
220  *a lod - level of detail; a number between 1 and get_num_lods()
221  **
222  *b Returns:
223  **
224  ** geometry filename as C string
225  */
226  const char* get_shape_set_filename_for_lod(int lod);
227 
228  /*l
229  *b Description:
230  **
231  ** This function returns the number of low-level geometry meshes that
232  ** comprise this shape.
233  **
234  *b Arguments:
235  **
236  *a lod - level of detail; a number between 1 and get_num_lods()
237  **
238  *b Returns:
239  **
240  ** number of meshes in this shape
241  */
242  int get_num_meshes(int lod);
243 
244  /*l
245  *b Description:
246  **
247  ** This function returns a pointer to one of the low-level geometry
248  ** mesh objects that comprise this shape.
249  **
250  *b Arguments:
251  **
252  *a index - index of mesh; a number between 0 and get_num_meshes() - 1
253  *a lod - level of detail; a number between 1 and get_num_lods()
254  **
255  *b Returns:
256  **
257  ** pointer to object of type diguyGraphicsMesh; NULL on error
258  */
259  diguyGraphicsMesh* get_mesh_at_index_for_lod(int index, int lod);
260 
261  /*l
262  *b Description:
263  **
264  ** This function returns a pointer to the link to which this shape is
265  ** actually attached.
266  **
267  *b Arguments:
268  **
269  *a index - index of mesh; a number between 0 and get_num_meshes() - 1
270  *a lod - level of detail; a number between 1 and get_num_lods()
271  **
272  *b Returns:
273  **
274  ** pointer to object of type diguyGraphicsMesh; NULL on error
275  */
276  diguyGraphicsLink* get_link();
277 
278  /*l
279  *b Description:
280  **
281  ** This function returns the name of the DI-Guy motion data variable
282  ** that controls whether this shape should be visible.
283  **
284  ** The returned pointer will be NULL if there is no associated
285  ** variable.
286  **
287  *b Returns:
288  **
289  ** name of the variable; NULL if there is no variable
290  */
291  const char* get_switch_var_name();
292 
293  /*l
294  *b Description:
295  **
296  ** This function returns the value of the DI-Guy motion data variable
297  ** for which the shape should be visible.
298  **
299  ** Note that the variable in the motion data is a float, but gets cast
300  ** to an integer and compared against this number during shape
301  ** updates.
302  **
303  *b Returns:
304  **
305  ** number representing value for which shape should be visible
306  */
307  int get_switch_value();
308 
309  /*l
310  *b Description:
311  **
312  ** This function returns whether this shape should currently be hidden
313  ** or shown, based on the value of the shape's switch variable (if
314  ** any).
315  **
316  *b Returns:
317  **
318  ** 1 if shape is hidden, 0 if not
319  */
320  int get_is_hidden();
321 
323  int set_is_hidden(int hidden);
324 
325  /*l
326  *b Description:
327  **
328  ** This function returns the geometry file from which geometry for the
329  ** shape was read. Each LOD of the shape may potentially come from a
330  ** different file.
331  **
332  ** Note that if a diguyGraphicsFile create function has not been
333  ** registered with a call to diguy_graphics_set_file_create_func(),
334  ** this function will return NULL.
335  **
336  *b Arguments:
337  **
338  *a lod - level of detail; a number between 1 and get_num_lods()
339  **
340  *b Returns:
341  **
342  ** object of type diguyGraphicsFile
343  */
344  diguyGraphicsFile* get_diguy_graphics_file(int lod);
345 
346 #ifdef CPLUSPLUS_ONLY
347 
348  /*l
349  *b Description:
350  **
351  ** This function returns a pointer to an object that represents the
352  ** geometry for the shape. The returned object is an object that has
353  ** been returned by a previous call to diguyGraphicsFile::find_part(),
354  ** and can be safely cast to the type of object that has been so
355  ** returned.
356  **
357  ** Note that if a diguyGraphicsFile create function has not been
358  ** registered with a call to diguy_graphics_set_file_create_func(),
359  ** this function will return NULL.
360  **
361  *b Arguments:
362  **
363  *a lod - level of detail; a number between 1 and get_num_lods()
364  **
365  *b Returns:
366  **
367  ** generic object which must be cast appropriately
368  **
369  *b Only Callable From C++
370  */
371  void* get_diguy_graphics_file_part(int lod);
372 
373 #endif
374 
375  /*l
376  *b Description:
377  **
378  ** Some shapes have meshes that have multiple selectable graphics
379  ** states, including materials and textures. This function returns
380  ** the value that specifies which graphics state to use for meshes of
381  ** this shape.
382  **
383  ** This is different than get_switch_value(), which returns the value
384  ** of the switch that controls whether or not meshes of this state are
385  ** shown.
386  **
387  *b Returns:
388  **
389  ** value of state switch; -1 if there is no state switch
390  */
391  int get_graphics_state_switch_index();
392 
393  /*l
394  *b Description:
395  **
396  ** Returns the number of switched graphics states available to this
397  ** shape. See get_graphics_state_switch_index().
398  **
399  *b Returns:
400  **
401  ** number of switched graphics states
402  */
403  int get_num_switched_graphics_states();
404 
405  /*l
406  *b Description:
407  **
408  ** Returns the graphics state associated with the passed switch value.
409  **
410  *b Returns:
411  **
412  ** pointer to type diguyGraphicsState
413  */
414  diguyGraphicsState* get_switched_graphics_state(int switch_value = -1);
415 
416  /*l
417  *b Description:
418  **
419  ** Returns in the passed pointers the unique color of this shape. All
420  ** shapes in a DI-Guy appearance are assigned a unique RGB color that
421  ** can be used in pick/selection operations.
422  **
423  ** Also see diguyScenario::map_color_to_impact().
424  **
425  ** See programming_examples/diguy_graphics_api/ogl_examples/intersection_test
426  ** for an example of its usage.
427  **
428  *b Returns:
429  **
430  ** 0 on success, -1 on failure
431  */
432  int get_unique_color(unsigned char* r,
433  unsigned char* g,
434  unsigned char* b);
435 
436  /*l
437  *b Description:
438  **
439  ** This function identifies if this shape has skinned data. Scene
440  ** graph renderers will need to know this in the build phase to help
441  ** set up the matrix data shader functionality.
442  **
443  *b Returns:
444  **
445  ** 1 if contains at lease one file with skinned data, 0 if not
446  */
447  int get_contains_skinned_file();
448 
450  /*l
451  *b Description:
452  **
453  ** By default DI-Guy provides three 4 float uniforms at the shape
454  ** level that can be used by end users to customize the appearance of
455  ** characters via shaders and misc textures. You can see a
456  ** demonstration of this in the Exface_sales_demo.dss file where an
457  ** additional texture is used. The uniforms are named:
458  **
459  *- -"ufrm_blood_color"
460  *- -"ufrm_grime_color"
461  *- -"ufrm_glow_color"
462  **
463  *b Example:
464  **
465  *e local character = this_scenario:get_character_at_index(0);
466  *e local link = character:get_link_at_index(0);
467  *e local shape = link:find_shape_by_class_type("head");
468  *e shape:set_material_parameter_4f("ufrm_blood_color",1,.1,.1,.5, 1);
469  */
470  int set_material_parameter_4f(const char* parameter_name,
471  float x, float y, float z, float w,
472  float blend_time = 0.0);
473 
474  /*l
475  *b Description:
476  **
477  ** Allow access to the current values of a material parameter, accounting
478  ** for value blending. Returns -1 if the parameter can't be found.
479  */
480  int get_material_parameter_4f(const char* parameter_name,
481  float* x, float* y, float* z, float* w);
482 
483  /*l
484  *b Description:
485  **
486  ** Returns a char * of length get_variation_texture_size() that represents
487  ** the pixels in a unique per shape texture. Typically a Retained mode
488  ** renderer would need to use this to load a state node with the texture
489  ** see diguyOsgGraphicsShape.cpp for an example. For an immediate mode
490  ** renderer we push the texture to the object via update_variation_texture()
491  */
492  unsigned char * get_variation_texture();
493 
495  int get_variation_texture_size();
496 
498  int get_num_variations();
499 
501  const char * get_variation_name(int variation_index);
502 
504  int set_variation_index(int variation_index);
505 
507  int get_has_custom_variation();
508 
510  int get_num_variation_components();
511 
513  const char * get_variation_component_name(int index);
514 
516  int get_variation_component_index(const char * name);
517 
520  int set_variation_component_value(int index, float color_shift_r, float color_shift_g, float color_shift_b);
521 
523  int set_state_switch_index(int index);
524 
525 
526 #ifdef CPLUSPLUS_ONLY
527 
528  /*l
529  *b Description:
530  **
531  ** This function is typically called by scene graph renderers as part
532  ** of diguyGraphicsShape::update(). Scene graph renderers should
533  ** queue up this data to be sent to the graphics card at the
534  ** appropriate time.
535  **
536  ** Note that the format of the data in mat_data will be affected by
537  ** the bdiGraphicsInitGraphicsAPI variable transpose_shader_matrices
538  ** value.
539  **
540  *b Callable From:
541  **
542  *- C++
543  */
544  int get_shader_matrix_data(int* num_matrixes, const float** matrix_data);
545 
546 #endif
547 
548  /*l
549  *b Description:
550  **
551  ** Returns the transpose state of the shader matrices.
552  **
553  *b Returns:
554  **
555  ** 1 if shader matrices are transposed, 0 otherwise.
556  */
557  int get_are_shader_matrices_transposed();
558 
559 
560 /*****************************************************************************/
572 #ifdef CPLUSPLUS_ONLY
573 
574  /*l
575  *b Description:
576  **
577  ** This function will be called by DI-Guy when it is time for
578  ** renderer-specific shape objects to be created. All information
579  ** necessary to build the shape should be available via the Accessor
580  ** Functions above when this function is called.
581  **
582  ** The build() function for the link to which a shape is attached
583  ** will be called before the shape's build() function.
584  **
585  *i Immediate Mode:
586  **
587  ** Immediate mode renderers can override this function, to create a
588  ** pre-compiled object that expedites the draw(). Display lists in
589  ** OpenGL are an example of this.
590  **
591  *i Scene Graph:
592  **
593  ** Scene graph renderers usually do override this function, to create
594  ** scene graph nodes that will hold geometry nodes of meshes attached
595  ** to the shape.
596  **
597  ** The following nodes are typically created:
598  **
599  *- - a switch node to control showing and hiding of the shape
600  *- - an LOD node to control which meshes are shown due to
601  *- LOD calculations
602  *- - a geometry parent or group-type object to which mesh
603  *- nodes can be attached
604  **
605  ** The scene graph nodes created by this function should be attached
606  ** to the nodes of the link to which the shape is attached. Use the
607  ** get_link() function to get a pointer to the link.
608  **
609  ** In addition, the scene graph objects of meshes attached to the
610  ** shape should be retrieved and attached to the shape's nodes. Use
611  ** the get_mesh_at_index_for_lod() function to get pointers to the
612  ** meshes.
613  **
614  *b Callable From:
615  **
616  *- - N/A (automatically called by DI-Guy Graphics API during
617  *- the Build Stage)
618  */
619  virtual void build();
620 
621  /*l
622  *b Description:
623  **
624  ** This function will be called by DI-Guy when it is time for the
625  ** renderer-specific shape objects created during the build() call to
626  ** be destroyed.
627  **
628  ** The unbuild() function for the shape will be called before the
629  ** unbuild() function of the link to which the shape is attached.
630  **
631  *i Immediate Mode:
632  **
633  ** Scene graph renderers can override this function, to destroy the
634  ** scene graph nodes created by build().
635  **
636  *i Scene Graph:
637  **
638  ** Scene graph renderers usually do override this function, to
639  ** destroy the scene graph nodes created by build().
640  **
641  *b Callable From:
642  **
643  *- - N/A (automatically called by DI-Guy Graphics API during
644  *- the Unbuild Stage)
645  */
646  virtual void unbuild();
647 
648  /*l
649  *b Description:
650  **
651  ** This function will be called by DI-Guy when it is time for
652  ** renderer-specific shape objects created during the build() call to
653  ** be updated with new data.
654  **
655  ** Shape updates control whether the shape is visible based on motion
656  ** data. The DI-Guy Graphics software looks at the switch value and
657  ** calls show() or hide() as appropriate, so it is likely that this
658  ** function does not need to be overridden in immediate mode.
659  **
660  ** The update() function for the link to which a shape is attached
661  ** will be called before the shape's update() function.
662  **
663  *i Immediate Mode:
664  **
665  ** Immediate mode renderers usually do not override this function.
666  **
667  *i Scene Graph:
668  **
669  ** Scene graph renderers should override this function if they are
670  ** supporting skinned characters. Each skinned shape can potentially
671  ** have different uniforms that need to be sent to the video card; see
672  ** get_shader_matrix_data().
673  **
674  *b Callable From:
675  **
676  *- - N/A (automatically called by DI-Guy Graphics API during
677  *- Update Stage)
678  */
679  virtual void update();
680 
681  /*l
682  *b Description:
683  **
684  ** This function will be called by DI-Guy when the shape should be
685  ** shown, typically due to a change in the motion data that controls
686  ** the switch. See get_switch_var_name() and get_switch_value().
687  **
688  *i Immediate Mode:
689  **
690  ** Immediate mode renderers usually do not override this function.
691  ** DI-Guy does not call the draw() function of hidden shapes.
692  **
693  *i Scene Graph:
694  **
695  ** Scene graph renderers usually do override this function, to update
696  ** the state of the switch node created during the build() call.
697  **
698  *b Callable From:
699  **
700  *- - N/A (automatically called by DI-Guy Graphics API during
701  *- Update Stage)
702  */
703  virtual void show();
704 
705  /*l
706  *b Description:
707  **
708  ** This function will be called by DI-Guy when the shape should be
709  ** hidden, typically due to a change in the motion data that controls
710  ** the switch. See get_switch_var_name() and get_switch_value().
711  **
712  *i Immediate Mode:
713  **
714  ** Immediate mode renderers usually do not override this function.
715  ** DI-Guy does not call the draw() function of hidden shapes.
716  **
717  *i Scene Graph:
718  **
719  ** Scene graph renderers usually do override this function, to update
720  ** the state of the switch node created during the build() call.
721  **
722  *b Callable From:
723  **
724  *- - N/A (automatically called by DI-Guy Graphics API during
725  *- Update Stage)
726  */
727  virtual void hide();
728 
729  // TODO MarcM Documentation
730  virtual void instancing_state_changed(int val);
731  /*l
732  *b Description:
733  **
734  ** This function will be called by DI-Guy when it is time for the
735  ** geometry of this shape to be drawn.
736  **
737  *i Immediate Mode:
738  **
739  ** Immediate mode renderers usually do not override this function.
740  ** The actual draw calls happen in diguyGraphicsMesh::draw() calls.
741  **
742  *i Scene Graph:
743  **
744  ** Scene graph renderers usually do not override this function;
745  ** drawing is handled automatically by scene graphs.
746  **
747  *b Callable From:
748  **
749  *- - N/A (automatically called by DI-Guy Graphics API during
750  *- Draw Stage)
751  */
752  virtual void draw(int lod);
753 
754  /*l
755  *b Description:
756  **
757  ** This function will be called by DI-Guy when the LOD ranges of this
758  ** shape need to be updated after the shape has initially been built
759  ** in the Build Stage.
760  **
761  *b Arguments:
762  **
763  *a lod_ranges - new lod ranges for this shape
764  **
765  ** See diguyScenario::set_default_lod_ranges() for a description of
766  ** what will be in the lod_ranges argument.
767  **
768  *i Immediate Mode:
769  **
770  ** Immediate mode renderers usually do not override this function.
771  ** Instead, they use the lod passed into the draw() function.
772  **
773  *i Scene Graph:
774  **
775  ** Scene graph renderers can override this function, to update the
776  ** ranges of LOD nodes created in the Build Stage, if any.
777  **
778  ** If there were LOD-type nodes created in the Build Stage, their
779  ** ranges should be updated based on the passed values.
780  **
781  ** If no LOD-type nodes were created in the Build Stage, this
782  ** function should have no effect.
783  **
784  ** Typically only one of set_graphics_lod_ranges() or
785  ** set_graphics_lod() is implemented.
786  **
787  *b Callable From:
788  **
789  *- - N/A (automatically called by DI-Guy Graphics API when the
790  *- DI-Guy API function diguyCharacter::set_lod_ranges() is
791  *- called)
792  */
793  virtual void set_graphics_lod_ranges(float* ranges);
794 
795  /*l
796  *b Description:
797  **
798  ** This function will be called by DI-Guy when the LOD of this link
799  ** is "manually" set by a diguyCharacter::set_graphics_lod() function
800  ** call.
801  **
802  *i Immediate Mode:
803  **
804  ** Immediate mode renderers usually do not override this function.
805  ** Instead, they use the lod passed into the draw() function.
806  **
807  *i Scene Graph:
808  **
809  ** Scene graph renderers sometimes override this function, to update
810  ** the state of switch nodes created in the Build Stage.
811  **
812  ** Typically only one of set_graphics_lod_ranges() or
813  ** set_graphics_lod() is implemented.
814  **
815  *b Callable From:
816  **
817  *- - N/A (automatically called by DI-Guy Graphics API when the
818  *- DI-Guy API function diguyCharacter::set_graphics_lod() is
819  *- called)
820  */
821  virtual void set_graphics_lod(int lod);
822 
823 
824  /*l
825  *b Description:
826  **
827  ** Pushes a char * pixel buffer of length num_pixels that represents
828  ** the unique per shape texture. Typically a Immediate mode renderer
829  ** would need to use this to create or update a texture
830  ** see diguyOglGraphicsShape.cpp for an example. For an retained mode
831  ** renderer we have get_variation_texture() as an accessor.
832  **
833  *b Callable From:
834  **
835  *- - N/A (automatically called by DI-Guy Graphics API during
836  *- Build Stage)
837  */
838  virtual void update_variation_texture(int num_pixels, unsigned char * pixel_data);
839 
840  /*l
841  *b Description:
842  **
843  ** Returns the unique color of the character links. All links in a
844  ** DI-Guy appearance are assigned a unique RGB color that can be used
845  ** in pick/selection operations. The data returned in color_data is
846  ** an array of length num_colors with 4 floats per entry (r, g, b, a).
847  **
848  ** See programming_examples/diguy_graphics_api/osg_2_examples/intersection_test
849  ** for an example of its usage.
850  **
851  *b Returns:
852  **
853  ** 0 on success, -1 on failure
854  */
855  int get_bind_color_array(int* num_colors, const float** color_data);
856 
857 #endif
858 
859 #ifdef CPLUSPLUS_ONLY
860 
861  // EXPERIMENTAL
862  // FIXME: Added to access quats directly instead of shader matricies
863  // for Unity optimization. [Marc 11/22/2013]
864  int get_link_to_matrix_table(int* num_matrices, const float** lookup_data);
865 
866  int get_bone_index_from_link_index(int link_index);
867 
868 #endif
869 
870  // documentation pending
871  int get_has_offset_matrix();
872  // documentation pending
873  int get_offset_matrix_4x4_ptr(float* matrix, int transpose = 0);
874 
875 
876 /****************************************************************************/
877 /****************************************************************************/
889  int get_has_offset_translation();
890 
891  int get_offset_translation(float* tx, float* ty, float* tz);
892 
893  int get_has_offset_rotation();
895  int get_offset_rotation(float* rz, float* rx, float* ry);
897  int get_has_offset_scale();
898 
899  int get_offset_scale(float* sx, float* sy, float* sz);
900 
901 /****************************************************************************/
902 /****************************************************************************/
903 
908 #ifdef CPLUSPLUS_ONLY
909 
910  bdiShape* get_scripted_object() {return m_scripted_object;}
911 
912 protected:
913 
914  /*l
915  ** A protected constructor. Constructors are called automatically
916  ** by DI-Guy.
917  */
918  diguyGraphicsShape(void* internal_data);
919 
920  /*l
921  ** A protected destructor. Destructors are called automatically
922  ** by DI-Guy.
923  */
924  virtual ~diguyGraphicsShape();
925 
926 private:
927 
928  /*l
929  ** A pointer to internal data.
930  */
931  bdiShape* m_scripted_object;
932 
933  friend class bdiShape;
934  friend class bdiGraphicsFactory;
935 
936 #endif
937 
938 };
939 
940 
941 #endif /* __diguyGraphicsShape_H */
942 
A class that represents a shared material/textures combination.
Definition: diguyGraphicsState.h:37
Definition: diguyGraphicsFile.h:35
A class that represents a shared mesh object.
Definition: diguyGraphicsMesh.h:36
The class that represents a DI-Guy Entity in the world.
Definition: diguyCharacter.h:78
A class that represents the unique per-character non-shared mesh object. DI-Guy encapsulates its text...
Definition: diguyGraphicsShape.h:53