My Project
action.h
Go to the documentation of this file.
1 #pragma once
2 #include "model\loader.h"
4 
5 class Action
6 {
7 public:
8  virtual void Execute(Scene* scene, Composite* loadedBricks, int ID) = 0;
9 };
10 
11 class ActionLoadbrick : public Action
12 {
13 public:
14  ActionLoadbrick(char* filename)
15  {
16  this->filename = filename;
17  }
18 
20  {
21  }
22 
23  virtual void Execute(Scene* scene, Composite* loadedBricks, int ID) override
24  {
25  Loader brick(this->filename);
26  brick.load(loadedBricks);
27  }
28 
29 private:
30  char* filename;
31 };
32 
33 class ActionAddbrick : public Action
34 {
35 public:
36  ActionAddbrick(int X, int Y, int Z, COLORREF color)
37  {
38  this->X = X;
39  this->Y = Y;
40  this->Z = Z;
41  this->color = color;
42  }
43 
45  {
46  }
47 
48  virtual void Execute(Scene* scene, Composite* loadedBricks, int ID) override
49  {
50  Brick brick = *(loadedBricks->objects[ID]);
51  scene->AddBrick(brick, this->X, this->Y, this->Z, this->color);
52  }
53 
54 private:
55  int X, Y, Z;
56  COLORREF color;
57 };
58 
59 class ActionDraw : public Action
60 {
61 public:
63  {
64  }
65 
67  {
68  }
69 
70  virtual void Execute(Scene* scene, Composite* loadedBricks, int ID) override
71  {
72  scene->DrawScene();
73  }
74 };
75 
76 class ActionBrickRotateX : public Action
77 {
78 public:
80  {
81  this->angle = angle;
82  }
83 
85  {
86  }
87 
88  virtual void Execute(Scene* scene, Composite* loadedBricks, int ID) override
89  {
90  RotationX* modification = new RotationX(this->angle);
91  BaseObject* brick = scene->bricks;
92  if (ID >= 0)
93  {
94  Composite* bricks = (Composite*)brick;
95  brick = bricks->objects[ID];
96  }
97  brick->modificate(modification);
98  }
99 
100 private:
101  double angle;
102 };
103 
105 {
106 public:
108  {
109  this->angle = angle;
110  }
111 
113  {
114  }
115 
116  virtual void Execute(Scene* scene, Composite* loadedBricks, int ID) override
117  {
118  RotationY* modification = new RotationY(this->angle);
119  BaseObject* brick = scene->bricks;
120  if (ID >= 0)
121  {
122  Composite* bricks = (Composite*)brick;
123  brick = bricks->objects[ID];
124  }
125  brick->modificate(modification);
126  }
127 
128 private:
129  double angle;
130 };
131 
133 {
134 public:
136  {
137  this->angle = angle;
138  }
139 
141  {
142  }
143 
144  virtual void Execute(Scene* scene, Composite* loadedBricks, int ID) override
145  {
146  RotationZ* modification = new RotationZ(this->angle);
147  BaseObject* brick = scene->bricks;
148  if (ID >= 0)
149  {
150  Composite* bricks = (Composite*)brick;
151  brick = bricks->objects[ID];
152  }
153  brick->modificate(modification);
154  }
155 
156 private:
157  double angle;
158 };
159 
161 {
162 public:
164  {
165  this->angle = angle;
166  }
167 
169  {
170  }
171 
172  virtual void Execute(Scene* scene, Composite* loadedBricks, int ID) override
173  {
174  scene->cam->rotateHorizontalSphere(this->angle);
175  }
176 
177 private:
178  double angle;
179 };
180 
182 {
183 public:
185  {
186  this->angle = angle;
187  }
188 
190  {
191  }
192 
193  virtual void Execute(Scene* scene, Composite* loadedBricks, int ID) override
194  {
195  scene->cam->rotateVerticalSphere(this->angle);
196  }
197 
198 private:
199  double angle;
200 };
Camera * cam
Definition: scene.h:69
Contains loaded bricks.
Definition: composite.h:23
virtual void modificate(Modification *modification, Vertex *center=nullptr)=0
void AddBrick(Brick brick, int X, int Y, int Z, COLORREF color)
Definition: scene.cpp:161
ActionLoadbrick(char *filename)
Definition: action.h:14
virtual void Execute(Scene *scene, Composite *loadedBricks, int ID) override
Definition: action.h:70
virtual void Execute(Scene *scene, Composite *loadedBricks, int ID) override
Definition: action.h:23
double angle
Definition: listener.cpp:17
ActionDraw()
Definition: action.h:62
Rotation in OZ surface.
Definition: rotation.h:144
~ActionLoadbrick()
Definition: action.h:19
virtual void Execute(Scene *scene, Composite *loadedBricks, int ID) override
Definition: action.h:172
virtual void Execute(Scene *scene, Composite *loadedBricks, int ID) override
Definition: action.h:88
Brick archetecture.
Definition: brick.h:25
Base object. Virtual class. No realisation.
Definition: baseobject.h:23
ActionCameraRotationHorizontal(double angle)
Definition: action.h:163
virtual void Execute(Scene *scene, Composite *loadedBricks, int ID) override
Definition: action.h:144
void DrawScene()
Definition: scene.cpp:119
Brick * load(Composite *obj)
Definition: loader.cpp:92
virtual void Execute(Scene *scene, Composite *loadedBricks, int ID) override
Definition: action.h:193
Definition: action.h:5
ActionBrickRotateY(double angle)
Definition: action.h:107
Rotation in OY surface.
Definition: rotation.h:112
vector< Brick * > objects
Definition: composite.h:59
Main scene.
Definition: scene.h:29
ActionCameraRotationVertical(double angle)
Definition: action.h:184
void rotateHorizontalSphere(double angle)
Definition: camera.cpp:34
ActionBrickRotateZ(double angle)
Definition: action.h:135
~ActionAddbrick()
Definition: action.h:44
Composite * bricks
Definition: scene.h:68
ActionBrickRotateX(double angle)
Definition: action.h:79
void rotateVerticalSphere(double angle)
Definition: camera.cpp:43
ActionAddbrick(int X, int Y, int Z, COLORREF color)
Definition: action.h:36
Rotation in OX surface.
Definition: rotation.h:79
Load model from file.
Definition: loader.h:23
virtual void Execute(Scene *scene, Composite *loadedBricks, int ID) override
Definition: action.h:48
~ActionDraw()
Definition: action.h:66
virtual void Execute(Scene *scene, Composite *loadedBricks, int ID)=0
virtual void Execute(Scene *scene, Composite *loadedBricks, int ID) override
Definition: action.h:116