1 
2 
3 /* These flags are OR'ed together */
4 
5 #define TUXMAT_BORING      0
6 #define TUXMAT_DANGEROUS   1
7 #define TUXMAT_SPROINGPAD  2
8 #define TUXMAT_TELEPORTER  4
9 #define TUXMAT_EXIT_LEVEL  8
10 #define TUXMAT_VERY_HOT    16
11 #define TUXMAT_IGNORE      32
12 #define TUXMAT_LETHAL      64
13 #define TUXMAT_STARTCLOCK  128
14 #define TUXMAT_STOPCLOCK   256
15 #define TUXMAT_COLD        512
16 #define TUXMAT_OXYGEN      1024
17 
18 struct Material
19 {
20 public:
21   ssgSimpleState **gst ;
22 
23   char *texture_map  ;
24   int   clamp_tex    ;
25   int   transparency ;
26   float alpha_ref    ;
27   int   lighting     ;
28   float friction     ;
29   unsigned int flags ;
30 
isNullMaterial31   int  isNull () { return gst == NULL ; } ;
32   void install ( int index ) ;
33 
getStateMaterial34   ssgState *getState    () { return *gst ; }
getTexFnameMaterial35   char     *getTexFname () { return texture_map ; }
36 
isColdMaterial37   int  isCold       () { return flags & TUXMAT_COLD ; }
isOxygenMaterial38   int  isOxygen     () { return flags & TUXMAT_OXYGEN ; }
isIgnoreMaterial39   int  isIgnore     () { return flags & (TUXMAT_IGNORE|TUXMAT_STARTCLOCK|TUXMAT_STOPCLOCK) ; }
isDangerousMaterial40   int  isDangerous  () { return flags & TUXMAT_DANGEROUS  ; }
isVeryHotMaterial41   int  isVeryHot    () { return flags & TUXMAT_VERY_HOT   ; }
isLethalMaterial42   int  isLethal     () { return flags & TUXMAT_LETHAL     ; }
isSproingPadMaterial43   int  isSproingPad () { return flags & TUXMAT_SPROINGPAD ; }
isTeleporterMaterial44   int  isTeleporter () { return flags & TUXMAT_TELEPORTER ; }
isExitMaterial45   int  isExit       () { return flags & TUXMAT_EXIT_LEVEL ; }
isStartClockMaterial46   int  isStartClock () { return flags & TUXMAT_STARTCLOCK ; }
isStopClockMaterial47   int  isStopClock  () { return flags & TUXMAT_STOPCLOCK  ; }
48 } ;
49 
50 
51 void initMaterials () ;
52 Material *getMaterial ( ssgState *s ) ;
53 Material *getMaterial ( ssgLeaf  *l ) ;
54 
55 
56 extern ssgSimpleState
57            *fire_gst   , *herring_gst , *cloak_gst       , *fin_gst     ,
58            *wood_gst   , *tuxbeak_gst , *water_gst       , *ice_gst     ,
59            *orca_gst   , *orcafin_gst , *party_gst       , *supertx_gst ,
60            *tree_gst   , *tuxfoot_gst , *grass_gst       , *sparkle_gst ,
61            *tux_gst    , *tuxflip_gst , *fuzzy_gst       , *stripes_gst ,
62            *pebbles_gst, *gun_gst     , *fademsk_gst     , *swirl_gst   ,
63            *bubble_gst , *snowball_gst, *herringbones_gst, *tinytux_gst ,
64            *smoke_gst  , *spark_gst   , *think_gst       , *lava_gst    ,
65            *camera_gst , *nocamera_gst, *clearice_gst    ,
66            *thermometer_gst, *startline_gst , *finishline_gst,
67            *solidblack_gst ;
68 
69