1 module armos.types.rectangle; 2 import armos.math; 3 /++ 4 長方形を表すstructです. 5 +/ 6 struct Rectangle { 7 armos.math.Vector2f position; 8 armos.math.Vector2f size; 9 10 // this(){ 11 // // auto position = new armos.math.Vector2f; 12 // // auto size = new armos.math.Vector2f; 13 // }; 14 15 /++ 16 開始点と終了点を指定して初期化します. 17 +/ 18 this(armos.math.Vector2f p, armos.math.Vector2f s){ 19 position = p; 20 size = s; 21 } 22 23 /++ 24 開始点と終了点を指定します. 25 +/ 26 void set(in float x, in float y, in float width, in float height){ 27 position = armos.math.Vector2f(x, y); 28 size = armos.math.Vector2f(width, height); 29 } 30 31 /++ 32 開始点と終了点を指定します. 33 +/ 34 void set(in armos.math.Vector2f p, in armos.math.Vector2f s){ 35 position = cast( armos.math.Vector2f )p; 36 size = cast( armos.math.Vector2f )s; 37 } 38 39 /++ 40 開始点のX座標のプロパティです. 41 +/ 42 float x(){return position[0];} 43 void x(float x_){position[0] = x_;} 44 45 /++ 46 開始点のY座標のプロパティです. 47 +/ 48 float y(){return position[1];} 49 void y(float y_){position[1] = y_;} 50 51 52 /++ 53 終了点のX座標のプロパティです. 54 +/ 55 float width(){return size[0];} 56 void width(float width_){size[0] = width_;} 57 58 /++ 59 終了点のY座標のプロパティです. 60 +/ 61 float height(){return size[1];} 62 void height(float height_){size[1] = height_;} 63 } 64