SDXFrameWork 0.13 SDXFrameWork

- Main Page
- Related Pages
- Classes

All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Camera.h
1 //Copyright © 2014 SDXFramework
2 //[License]GNU Affero General Public License, version 3
3 //[Contact]http://sourceforge.jp/projects/dxframework/
4 #pragma once
5 #include <Multimedia/SDX.h>
6 #include <Utility/IMotion.h>
7
8 namespace SDX
9 {
12 class Camera
13 {
14 //●影響があるクラスと関数
15 //[Renderer/Screen]
16 //SetClip
17 //[Drawing]
18 //Line
19 //Rect
20 //Circle
21 //Oval
22 //Polygon
23 //Triangle
24 //Pixel
25 //[Image]
26 //Draw～6種
27 //
28 //●間接的に影響
29 //[Font]
30 //Imageを利用
31 //[BmpFrame]
32 //Imageを利用
33 //[Shape]
34 //Drawingを利用
35 //[Sprite]
36 //ImageやDrawingを利用
37 private:
38 double angle;
39 std::unique_ptr<MOTION::IMotion> motion;
40
41 static Camera* active;
42 public:
43 Point position;
44 Point forcus;
45 double zoom;
46
49 Camera(const Point &座標, double 拡大率) :
50 position(座標),
51 forcus(座標),
52 zoom(拡大率),
53 angle(0)
54 {}
55
57 static Camera* Get()
58 {
59 return active;
60 }
61
63 static void Set(Camera *アクティブにするCamera = nullptr)
64 {
65 active = アクティブにするCamera;
66 }
67
69 void SetMotion( std::unique_ptr<MOTION::IMotion> 移動パターン)
70 {
71 motion = std::move(移動パターン);
72 }
73
75 void Update()
76 {
77 if (motion)
78 {
79 motion->Update(&position);
80 }
81 }
82
84 double TransX(double X座標変換前) const
85 {
86 return forcus.x + (X座標変換前 - position.x) * zoom;
87 }
88
90 double TransY(double Y座標変換前) const
91 {
92 return forcus.y + (Y座標変換前 - position.y) * zoom;
93 }
94
96 Point Trans(const Point &変換前座標) const
97 {
98 return{ TransX(変換前座標.x) , TransY(変換前座標.y) };
99 }
100
102 SDL_Rect TransRect(const SDL_Rect &変換前矩形) const
103 {
104 return{ (int)TransX(変換前矩形.x), (int)TransY(変換前矩形.y), (int)(変換前矩形.w * zoom), (int)(変換前矩形.h *zoom) };
105 }
106 };
107 }
SDX::Point::y
double y
座標
Definition: Point.h:26
SDX::Camera::Update
void Update()
モーションに応じてカメラ位置の更新.
Definition: Camera.h:75
SDX::Camera::position
Point position
中心の位置
Definition: Camera.h:43
SDX::Camera::TransRect
SDL_Rect TransRect(const SDL_Rect &変換前矩形) const
領域を画面上のどこに相当するか変換.
Definition: Camera.h:102
SDX::Point
点を表す図形クラス.
Definition: Point.h:22
SDX::Camera::TransX
double TransX(double X座標変換前) const
カメラの位置と拡大率に応じてX座標を変換.
Definition: Camera.h:84
SDX::Camera::TransY
double TransY(double Y座標変換前) const
カメラの位置と拡大率に応じてY座標を変換.
Definition: Camera.h:90
SDX::Camera::SetMotion
void SetMotion(std::unique_ptr< MOTION::IMotion > 移動パターン)
カメラの移動モーションを設定.
Definition: Camera.h:69
SDX::Camera::Get
static Camera * Get()
現在アクティブなカメラを取得.
Definition: Camera.h:57
SDX::Camera::zoom
double zoom
拡大率、マイナスになると描画が狂う
Definition: Camera.h:45
SDX::Point::x
double x
座標
Definition: Point.h:25
SDX::Camera
2D用に座標変換を行うカメラを表すクラス.
Definition: Camera.h:12
SDX::Camera::Set
static void Set(Camera *アクティブにするCamera=nullptr)
現在アクティブなカメラを設定.
Definition: Camera.h:63
SDX::Camera::Trans
Point Trans(const Point &変換前座標) const
座標を画面上のどこに表示されるか変換.
Definition: Camera.h:96
SDX::Camera::Camera
Camera(const Point &座標, double 拡大率)
カメラの作成.
Definition: Camera.h:49
SDX::Camera::forcus
Point forcus
Screen上の座標positonがWindow上のforcusに来るように補正をかける
Definition: Camera.h:44