-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBoxNode.cpp
More file actions
93 lines (81 loc) · 2.97 KB
/
BoxNode.cpp
File metadata and controls
93 lines (81 loc) · 2.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "BoxNode.h"
#include <math.h>
#include "os.h"
#include "ColorSpec.h"
#include "Config.h"
#include "PropSpec.h"
BoxNode::BoxNode(const string& id, GLuint mt, const PropSpec& initSpec)
: PropNode(id, initSpec), myTex_(mt) {
}
BoxNode::~BoxNode() {
}
void BoxNode::render() {
glPushMatrix();
glPushAttrib(GL_TEXTURE_BIT);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, myTex_);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, Config::SHINY_MAT_DIF);
Config::BOX_COLOR->set();
glTranslated(myProp_.getXPos(), 0, myProp_.getYPos());
glScaled(myProp_.getXDim(), Config::BOX_HEIGHT, myProp_.getYDim());
glBegin(GL_QUADS);
glNormal3d(1, 0, 0);
glTexCoord2f(0, 0);
glVertex3d(0.5, -0.5, -0.5);
glTexCoord2f(round(myProp_.getYDim()), 0);
glVertex3d(0.5, -0.5, 0.5);
glTexCoord2f(round(myProp_.getYDim()), Config::BOX_HEIGHT);
glVertex3d(0.5, 0.5, 0.5);
glTexCoord2f(0, Config::BOX_HEIGHT);
glVertex3d(0.5, 0.5, -0.5);
glNormal3d(-1, 0, 0);
glTexCoord2f(0, 0);
glVertex3d(-0.5, -0.5, -0.5);
glTexCoord2f(round(myProp_.getYDim()), 0);
glVertex3d(-0.5, -0.5, 0.5);
glTexCoord2f(round(myProp_.getYDim()), Config::BOX_HEIGHT);
glVertex3d(-0.5, 0.5, 0.5);
glTexCoord2f(0, Config::BOX_HEIGHT);
glVertex3d(-0.5, 0.5, -0.5);
glNormal3d(0, 1, 0);
glTexCoord2f(0, 0);
glVertex3d(-0.5, 0.5, -0.5);
glTexCoord2f(round(myProp_.getXDim()), 0);
glVertex3d(0.5, 0.5, -0.5);
glTexCoord2f(round(myProp_.getXDim()), round(myProp_.getYDim()));
glVertex3d(0.5, 0.5, 0.5);
glTexCoord2f(0, round(myProp_.getYDim()));
glVertex3d(-0.5, 0.5, 0.5);
glNormal3d(0, -1, 0);
glTexCoord2f(0, 0);
glVertex3d(-0.5, -0.5, -0.5);
glTexCoord2f(round(myProp_.getXDim()), 0);
glVertex3d(-0.5, -0.5, 0.5);
glTexCoord2f(round(myProp_.getXDim()), round(myProp_.getYDim()));
glVertex3d(0.5, -0.5, 0.5);
glTexCoord2f(0, round(myProp_.getYDim()));
glVertex3d(0.5, -0.5, -0.5);
glNormal3d(0, 0, 1);
glTexCoord2f(0, 0);
glVertex3d(-0.5, -0.5, 0.5);
glTexCoord2f(round(myProp_.getXDim()), 0);
glVertex3d(0.5, -0.5, 0.5);
glTexCoord2f(round(myProp_.getXDim()), Config::BOX_HEIGHT);
glVertex3d(0.5, 0.5, 0.5);
glTexCoord2f(0, Config::BOX_HEIGHT);
glVertex3d(-0.5, 0.5, 0.5);
glNormal3d(0, 0, -1);
glTexCoord2f(0, 0);
glVertex3d(-0.5, -0.5, -0.5);
glTexCoord2f(round(myProp_.getXDim()), 0);
glVertex3d(0.5, -0.5, -0.5);
glTexCoord2f(round(myProp_.getXDim()), Config::BOX_HEIGHT);
glVertex3d(0.5, 0.5, -0.5);
glTexCoord2f(0, Config::BOX_HEIGHT);
glVertex3d(-0.5, 0.5, -0.5);
glEnd();
SceneNode::render();
glPopAttrib();
glPopMatrix();
}