Class: Ray::View

Inherits:
Object
  • Object
show all
Defined in:
lib/ray/view.rb,
ext/view.c

Instance Method Summary collapse

Constructor Details

#initialize(center, size, viewport = [0, 0, 1, 1]) ⇒ Object #initialize(matrix) ⇒ Object

Overloads:

  • #initialize(center, size, viewport = [0, 0, 1, 1]) ⇒ Object

    Parameters:

  • #initialize(matrix) ⇒ Object

    Parameters:



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'ext/view.c', line 38

static
VALUE ray_view_init(int argc, VALUE *argv, VALUE self) {
  say_view *view = ray_rb2view(self);

  if (argc == 1) {
    say_view_set_matrix(view, ray_rb2matrix(argv[0]));
  }
  else {
    VALUE center, size, viewport = Qnil;
    rb_scan_args(argc, argv, "21", &center, &size, &viewport);

    say_view_set_center(view, ray_convert_to_vector2(center));
    say_view_set_size(view, ray_convert_to_vector2(size));

    if (!NIL_P(viewport)) {
      say_view_set_viewport(view, ray_convert_to_rect(viewport));
    }
  }

  return self;
}

Instance Method Details

#==(other) ⇒ Object



3
4
5
# File 'lib/ray/view.rb', line 3

def ==(other)
  other.is_a?(Ray::View) && self.matrix == other.matrix
end

#centerObject



78
79
80
81
# File 'ext/view.c', line 78

static
VALUE ray_view_center(VALUE self) {
  return ray_vector2_to_rb(say_view_get_center(ray_rb2view(self)));
}

#center=(val) ⇒ Object



83
84
85
86
87
88
# File 'ext/view.c', line 83

static
VALUE ray_view_set_center(VALUE self, VALUE val) {
  rb_check_frozen(self);
  say_view_set_center(ray_rb2view(self), ray_convert_to_vector2(val));
  return val;
}

#hObject



36
# File 'lib/ray/view.rb', line 36

def h; size.h;   end

#h=(val) ⇒ Object



41
# File 'lib/ray/view.rb', line 41

def h=(val); self.size   = [w, val]; end

#initialize_copy(orig) ⇒ Object



60
61
62
63
64
# File 'ext/view.c', line 60

static
VALUE ray_view_init_copy(VALUE self, VALUE orig) {
  say_view_copy(ray_rb2view(self), ray_rb2view(orig));
  return self;
}

#inspectObject



43
44
45
# File 'lib/ray/view.rb', line 43

def inspect
  "#<#{self.class} center=#{center} size=#{size} viewport=#{viewport}>"
end

#matrixObject



102
103
104
105
# File 'ext/view.c', line 102

static
VALUE ray_view_matrix(VALUE self) {
  return ray_matrix2rb(say_view_get_matrix(ray_rb2view(self)));
}

#matrix=(val) ⇒ Object



107
108
109
110
111
112
# File 'ext/view.c', line 107

static
VALUE ray_view_set_matrix(VALUE self, VALUE val) {
  rb_check_frozen(self);
  say_view_set_matrix(ray_rb2view(self), ray_rb2matrix(val));
  return val;
}

#rectRay::Rect

Returns Rect representing the part of the world that can be seen through this view.

Returns:

  • (Ray::Rect)

    Rect representing the part of the world that can be seen through this view.



26
27
28
29
30
31
# File 'lib/ray/view.rb', line 26

def rect
  size = self.size
  pos  = self.center

  Ray::Rect[pos.x - size.x / 2, pos.y - size.y / 2, size.x, size.y]
end

#sizeObject



66
67
68
69
# File 'ext/view.c', line 66

static
VALUE ray_view_size(VALUE self) {
  return ray_vector2_to_rb(say_view_get_size(ray_rb2view(self)));
}

#size=(val) ⇒ Object



71
72
73
74
75
76
# File 'ext/view.c', line 71

static
VALUE ray_view_set_size(VALUE self, VALUE val) {
  rb_check_frozen(self);
  say_view_set_size(ray_rb2view(self), ray_convert_to_vector2(val));
  return val;
}

#unzoom_by(value) ⇒ Object

Decreases zoom (making object appear smaller).

Parameters:

See Also:



20
21
22
# File 'lib/ray/view.rb', line 20

def unzoom_by(value)
  self.size *= value
end

#viewportObject



90
91
92
93
# File 'ext/view.c', line 90

static
VALUE ray_view_viewport(VALUE self) {
  return ray_rect2rb(say_view_get_viewport(ray_rb2view(self)));
}

#viewport=(val) ⇒ Object



95
96
97
98
99
100
# File 'ext/view.c', line 95

static
VALUE ray_view_set_viewport(VALUE self, VALUE val) {
  rb_check_frozen(self);
  say_view_set_viewport(ray_rb2view(self), ray_convert_to_rect(val));
  return val;
}

#wObject



35
# File 'lib/ray/view.rb', line 35

def w; size.w;   end

#w=(val) ⇒ Object



40
# File 'lib/ray/view.rb', line 40

def w=(val); self.size   = [val, h]; end

#xObject



33
# File 'lib/ray/view.rb', line 33

def x; center.x; end

#x=(val) ⇒ Object



38
# File 'lib/ray/view.rb', line 38

def x=(val); self.center = [val, y]; end

#yObject



34
# File 'lib/ray/view.rb', line 34

def y; center.y; end

#y=(val) ⇒ Object



39
# File 'lib/ray/view.rb', line 39

def y=(val); self.center = [x, val]; end

#zoom_by(value) ⇒ Object

Increases zoom (making object appear bigger). The center of the view and its viewport aren’t affected by this.

Parameters:

See Also:



12
13
14
# File 'lib/ray/view.rb', line 12

def zoom_by(value)
  self.size /= value
end