/// <summary> /// コンストラクター /// </summary> public Camera() { this.type = ProjectionType.Undefined; this.viewport = new Rectangle (0, 0, 1, 1); this.screen = new Rectangle (0, 0, 0, 0); this.clear = true; this.clearColor = Color.Blue; }
/// <summary> /// ビューポートの設定 /// </summary> /// <remarks> /// ビューポートはウィンドウの相対値 [0,1] で指定します。 /// ウィンドウをはみ出す領域は指定できません。 /// </remarks> /// <param name="x">ビューポートのX [0,1]</param> /// <param name="y">ビューポートのY [0,1]</param> /// <param name="width">ビューポートの幅 [0,1]</param> /// <param name="height">ビューポートの高さ [0,1]</param> public void SetViewport(float x, float y, float width, float height) { if (x < 0 || x > 1 || y < 0 || y > 1 || width < 0 || width > 1 || height < 0 || height > 1) { throw new ArgumentException ("Viewport is inalid"); } if (x + width > 1 || y + height > 1) { throw new ArgumentException ("Viewport is inalid"); } this.viewport = new Rectangle (x, y, width, height); }
/// <summary> /// カメラの2Dスクリーン投影に変更 /// </summary> /// <remarks> /// カメラの投影方式を2D用のスクリーン投影に変更します。 /// ワールド座標の(x,y)-(x+<paramref name="width"/>,y+<paramref name="height"/>)が描画され、 /// ウィンドウ(のビューポート)に一致するように伸張されて表示されます。 /// (x,y)はこのカメラ ノードのグローバル座標位置です。 /// <note> /// カメラ ノードのスケール係数によって描画領域(スクリーン)の大きさは変更されません(平行移動と回転は有効)。 /// 現実世界と同様に大きいカメラで撮ろうが小さいカメラで撮ろうとレンズが同じなら同じ写真になります。 /// </note> /// </remarks> /// <param name="x">スクリーンのオフセットX(ローカル座標)</param> /// <param name="y">スクリーンのオフセットY(ローカル座標)</param> /// <param name="width">スクリーン幅</param> /// <param name="height">スクリーン高さ</param> public void SetScreen(float x, float y, float width, float height) { if (width < 0 || height < 0) { throw new ArgumentException ("Width or Height is inalid"); } this.type = ProjectionType.Screen; this.screen = new Rectangle (x, y, width, height); }