summaryrefslogtreecommitdiffstats
path: root/Cubehole.h
blob: 83ef3827b85718e3b0f6153838fd457dbd7a461d (plain)
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
#ifndef _CUBEHOLE_H_
#define _CUBEHOLE_H_

#include "Trapezocube.h"
#include "Triangle.h"
#include "Matrix.h"

#include <list>

class Cubehole
{
  public:
    Cubehole(): width(0), height(0), depth(0), x(0), y(0), z(0), innerwidth(0), innerdepth(0),
                colorfront(0), colorback(0), colorleft(0), colorright(0) {
    }
    Cubehole(float width0, float height0, float depth0, float x0, float y0, float z0,
           float innerwidth0, float innerdepth0,
           Color colorfront0, Color colorright0, Color colorback0, Color colorleft0) {
              setSize(width0, height0, depth0, innerwidth0, innerdepth0);
              setPos(x0, y0, z0);
              setColor(colorfront0, colorright0, colorback0, colorleft0);
              front.setRotate(0);
              right.setRotate(90);
              back.setRotate(180);
              left.setRotate(270);
            }
    float getHeight();
    float getWidth();
    float getDepth();
    float getPosX();
    float getPosY();
    float getPosZ();
    float getInnerWidth() {return innerwidth;}
    float getInnerDepth() {return innerdepth;}
    void setSize(float w, float h, float d, float iw, float id){
      width = w;
      height = h;
      depth = d;
      innerwidth = iw;
      innerdepth = id;
      front.setSize(width, innerwidth, height, (depth-innerdepth)/2);
      right.setSize(width, innerdepth, height, (width-innerwidth)/2);
       back.setSize(width, innerwidth, height, (depth-innerdepth)/2);
       left.setSize(width, innerdepth, height, (width-innerwidth)/2);
    }
    void setPos(float x0, float y0, float z0) {
      x = x0;
      y = y0;
      z = z0;
      front.setPos(x, y, depth-(depth-innerdepth)/2);
      right.setPos(x, y, width-(width-innerwidth)/2);
       back.setPos(x, y, depth-(depth-innerdepth)/2);
       left.setPos(x, y, width-(width-innerwidth)/2);
    }
    void setColor(Color cf, Color cr, Color cb, Color cl){
      front.setColor(cf);
      right.setColor(cr);
      back.setColor(cb);
      left.setColor(cl);
    }
    std::list<Triangle> getTriangles(/*const Matrix &modelview*/);

  private:
    float x, y, z, width, height, depth, innerwidth, innerdepth;
    Color colorfront, colorleft, colorback, colorright;
    Trapezocube front, right, back, left;

};

#endif /*_CUBEHOLE_H_*/