SDXFrameWork  0.13
SDXFrameWork
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
SDX::Camera Class Reference

2D用に座標変換を行うカメラを表すクラス. More...

#include <Camera.h>

Public Member Functions

 Camera (const Point &座標, double 拡大率)
 カメラの作成. More...
 
void SetMotion (std::unique_ptr< MOTION::IMotion > 移動パターン)
 カメラの移動モーションを設定. More...
 
void Update ()
 モーションに応じてカメラ位置の更新. More...
 
double TransX (double X座標変換前) const
 カメラの位置と拡大率に応じてX座標を変換. More...
 
double TransY (double Y座標変換前) const
 カメラの位置と拡大率に応じてY座標を変換. More...
 
Point Trans (const Point &変換前座標) const
 座標を画面上のどこに表示されるか変換. More...
 
SDL_Rect TransRect (const SDL_Rect &変換前矩形) const
 領域を画面上のどこに相当するか変換. More...
 

Static Public Member Functions

static CameraGet ()
 現在アクティブなカメラを取得. More...
 
static void Set (Camera *アクティブにするCamera=nullptr)
 現在アクティブなカメラを設定. More...
 

Public Attributes

Point position
 中心の位置
 
Point forcus
 Screen上の座標positonがWindow上のforcusに来るように補正をかける
 
double zoom
 拡大率、マイナスになると描画が狂う
 

Detailed Description

2D用に座標変換を行うカメラを表すクラス.

//Copyright © 2014 SDXFramework
//[License]GNU Affero General Public License, version 3
//[Contact]http://sourceforge.jp/projects/dxframework/
//[未実装]
bool SampleCamera()
{
using namespace SDX;
System::Initialise("sample", 640, 480);
Camera camera({320,240},1);
Image image("data/pipo-enemy035.png");
Font font(SystemFont::Mincho, 10);
ImagePack frameImage("data/pipo-WindowBase001.png", 9, 3, 3);
BmpFrame bmpFrame(&frameImage);
while (System::Update())
{
Camera::Set(&camera);
Drawing::Rect({ 10, 10, 100, 100 }, Color::White);
Drawing::Circle({ 200, 200, 100 }, Color::Red, 20);
Drawing::Line({ 0, 0 }, { 640, 480 }, Color::Lime);
font.Draw({ 200, 10 }, Color::Blue, "Hello World!");
image.Draw({ 300, 300 });
Camera::Set();//カメラによる位置補正無効化
bmpFrame.Draw({ 0, 0, 640, 40 });
font.Draw({ 10, 10 }, Color::White, { "マウスカーソルでカメラ位置変更、ホイールで拡大縮小\n位置 =", Input::mouse.x, ",",Input::mouse.y," 拡大率 = ",camera.zoom });
//マウスの位置が中心に来る
camera.position = { Input::mouse.x, Input::mouse.y };
//ホイールで拡大縮小
if (Input::mouse.Whell > 0)
{
camera.zoom *= 0.9;
}
if (Input::mouse.Whell < 0)
{
camera.zoom *= 1.1;
}
if (Input::key.Return.on){ break; }//Enterで終了
}
return true;
}

Constructor & Destructor Documentation

SDX::Camera::Camera ( const Point 座標,
double  拡大率 
)
inline

カメラの作成.

初期座標と拡大率を指定してカメラを初期化

Member Function Documentation

static Camera* SDX::Camera::Get ( )
inlinestatic

現在アクティブなカメラを取得.

static void SDX::Camera::Set ( Camera アクティブにするCamera = nullptr)
inlinestatic

現在アクティブなカメラを設定.

void SDX::Camera::SetMotion ( std::unique_ptr< MOTION::IMotion 移動パターン)
inline

カメラの移動モーションを設定.

void SDX::Camera::Update ( )
inline

モーションに応じてカメラ位置の更新.

double SDX::Camera::TransX ( double  X座標変換前) const
inline

カメラの位置と拡大率に応じてX座標を変換.

double SDX::Camera::TransY ( double  Y座標変換前) const
inline

カメラの位置と拡大率に応じてY座標を変換.

Point SDX::Camera::Trans ( const Point 変換前座標) const
inline

座標を画面上のどこに表示されるか変換.

SDL_Rect SDX::Camera::TransRect ( const SDL_Rect &  変換前矩形) const
inline

領域を画面上のどこに相当するか変換.