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