Class: Bayonetta::Tangents

Inherits:
UByteList
  • Object
show all
Includes:
VectorAccessor
Defined in:
lib/bayonetta/wmb.rb

Instance Method Summary collapse

Methods included from VectorAccessor

#[], #[]=

Methods inherited from UByteList

#__convert, #__dump, #__load, inherited, #initialize, is_bayo2?

Constructor Details

This class inherits a constructor from Bayonetta::UByteList

Instance Method Details

#clamp(v, max, min) ⇒ Object



130
131
132
133
134
135
136
137
# File 'lib/bayonetta/wmb.rb', line 130

def clamp(v, max, min)
  if v > max
    v = max
  elsif v < min
    v = min
  end
  v
end

#normalize(fx, fy, fz) ⇒ Object



179
180
181
182
183
# File 'lib/bayonetta/wmb.rb', line 179

def normalize(fx, fy, fz)
  nrm = Math::sqrt(fx*fx+fy*fy+fz*fz)
  return [0.0, 0.0, 0.0] if nrm == 0.0
  [fx/nrm, fy/nrm, fz/nrm]
end

#sObject



151
152
153
# File 'lib/bayonetta/wmb.rb', line 151

def s
  (((@data >> 24) & 0xff) -127.0)/127.0
end

#s=(v) ⇒ Object



173
174
175
176
177
# File 'lib/bayonetta/wmb.rb', line 173

def s=(v)
  v2 = clamp((v*127.0+127.0).round, 255, 0)
  @data = (@data & 0x00ffffff) | (v2 << 24)
  v
end

#set(x, y, z, s = nil) ⇒ Object



185
186
187
188
189
190
191
192
# File 'lib/bayonetta/wmb.rb', line 185

def set(x, y, z, s = nil)
  x, y, z = normalize(x, y, z)
  self.x = x
  self.y = y
  self.z = z
  self.s = s if s
  self
end

#to_aObject



194
195
196
# File 'lib/bayonetta/wmb.rb', line 194

def to_a
  [x, y, z, s]
end

#xObject



139
140
141
# File 'lib/bayonetta/wmb.rb', line 139

def x
  ((@data & 0xff) - 127.0)/127.0
end

#x=(v) ⇒ Object



155
156
157
158
159
# File 'lib/bayonetta/wmb.rb', line 155

def x=(v)
  v2 = clamp((v*127.0+127.0).round, 255, 0)
  @data = (@data & 0xffffff00) | v2
  v
end

#yObject



143
144
145
# File 'lib/bayonetta/wmb.rb', line 143

def y
  (((@data >> 8) & 0xff) - 127.0)/127.0
end

#y=(v) ⇒ Object



161
162
163
164
165
# File 'lib/bayonetta/wmb.rb', line 161

def y=(v)
  v2 = clamp((v*127.0+127.0).round, 255, 0)
  @data = (@data & 0xffff00ff) | (v2 << 8)
  v
end

#zObject



147
148
149
# File 'lib/bayonetta/wmb.rb', line 147

def z
  (((@data >> 16) & 0xff) -127.0)/127.0
end

#z=(v) ⇒ Object



167
168
169
170
171
# File 'lib/bayonetta/wmb.rb', line 167

def z=(v)
  v2 = clamp((v*127.0+127.0).round, 255, 0)
  @data = (@data & 0xff00ffff) | (v2 << 16)
  v
end