| 292 | return s; |
| 293 | } |
| 294 | |
| 295 | public State interpolate(float amount, State towards) |
| 296 | { |
| 297 | State s = copy(); |
| 298 | |
| 299 | s.position.lerp(towards.position, amount); |
| 300 | s.target.lerp(towards.target, amount); |
| 301 | s.up.lerp(towards.up, amount); |
| 302 | |
| 303 | s.fov = s.fov*(1-amount) + amount*towards.fov; |
| 304 | s.io_disparity = s.io_disparity*(1-amount) + amount*towards.io_disparity; |
| 305 | s.io_disparity_per_distance = s.io_disparity_per_distance*(1-amount) + amount*towards.io_disparity_per_distance; |
| 306 | s.io_frustra = s.io_frustra*(1-amount) + amount*towards.io_frustra; |
| 307 | s.aspect = s.aspect*(1-amount) + amount*towards.aspect; |
| 308 | s.far = s.far*(1-amount) + amount*towards.far; |
| 309 | s.near = s.near*(1-amount) + amount*towards.near; |
| 310 | s.rx = s.rx*(1-amount) + amount*towards.rx; |
| 311 | s.ry = s.ry*(1-amount) + amount*towards.ry; |
| 312 | s.sx = s.sx*(1-amount) + amount*towards.sx; |
| 313 | s.sy = s.sy*(1-amount) + amount*towards.sy; |
| 314 | |
| 315 | |
| 316 | return s; |
| 317 | |
| 318 | } |
| 319 | |
| 320 | |