Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/branches/importer/importer/material.cc @ 2778

Last change on this file since 2778 was 2778, checked in by bensch, 20 years ago

orxonox/branches/importer: reimplemented class material. searcher works now, all options are really set.

File size: 2.4 KB
Line 
1#include "material.h"
2
3Material::Material()
4{
5  init();
6 
7  setName ("");
8}
9
10Material::Material (char* mtlName)
11{
12  init();
13 
14  setName (mtlName);
15}
16
17Material* Material::addMaterial(char* mtlName)
18{
19  Material* newMat = new Material(mtlName);
20  Material* tmpMat = this;
21  while (tmpMat->nextMat != NULL)
22    {
23      tmpMat = tmpMat->nextMat;
24    }
25      tmpMat->nextMat = newMat;
26      return newMat;
27 
28}
29
30void Material::init(void)
31{
32  nextMat = NULL;
33
34  setIllum(1);
35  setDiffuse(0,0,0);
36  setAmbient(0,0,0);
37  setSpecular(0,0,0);
38  setTransparency(0.0);
39}
40
41
42void Material::setName (char* mtlName)
43{
44  strcpy(name, mtlName);
45  //  printf ("adding new Material: %s, %p\n", this->getName(), this);
46
47}
48char* Material::getName (void)
49{
50  return name;
51}
52
53
54void Material::setIllum (int illum)
55{
56  illumModel = illum;
57  //  printf ("setting illumModel to: %i\n", illumModel);
58}
59void Material::setIllum (char* illum)
60{
61  setIllum (atoi(illum));
62}
63
64void Material::setDiffuse (float r, float g, float b)
65{
66  diffuse[0] = r;
67  diffuse[1] = g;
68  diffuse[2] = b;
69  //  printf ("setting Diffuse Color to r=%f g=%f b=%f\n", r, g, b);
70}
71void Material::setDiffuse (char* rgb)
72{
73  char r[20],g[20],b[20];
74  sscanf (rgb, "%s %s %s", r, g, b);
75  setDiffuse (atof(r), atof(g), atof(b));
76}
77
78void Material::setAmbient (float r, float g, float b)
79{
80  ambient[0] = r;
81  ambient[1] = g;
82  ambient[2] = b;
83  //  printf ("setting Ambient Color to r=%f g=%f b=%f\n", r, g, b);
84}
85void Material::setAmbient (char* rgb)
86{
87  char r[20],g[20],b[20];
88  sscanf (rgb, "%s %s %s", r, g, b);
89  setAmbient (atof(r), atof(g), atof(b));
90}
91
92void Material::setSpecular (float r, float g, float b)
93{
94  specular[0] = r;
95  specular[1] = g;
96  specular[2] = b;
97  //printf ("setting Specular Color to r=%f g=%f b=%f\n", r, g, b);
98}
99void Material::setSpecular (char* rgb)
100{
101  char r[20],g[20],b[20];
102  sscanf (rgb, "%s %s %s", r, g, b);
103  setSpecular (atof(r), atof(g), atof(b));
104}
105
106
107void Material::setTransparency (float trans)
108{
109  transparency = trans;
110}
111void Material::setTransparency (char* trans)
112{
113  char tr[20];
114  sscanf (trans, "%s", tr);
115  setTransparency (atof(tr));
116}
117
118
119Material* Material::search (char* mtlName)
120{
121  Material* searcher = this;
122  while (searcher != NULL)
123    {
124      if (!strcmp (searcher->getName(), mtlName))
125        return searcher;
126      searcher = searcher->nextMat;
127    }
128  return NULL;
129}
130
131bool Material::select (void)
132{
133  glColor3f (diffuse[0], diffuse[1], diffuse[2]);
134}
Note: See TracBrowser for help on using the repository browser.