Moves the object for one frame
| 261 | |
| 262 | // Moves the object for one frame |
| 263 | int SlewFrame(object *obj, int movement_limitations) { |
| 264 | static int16_t old_joy_x = 0, old_joy_y = 0; // position last time around |
| 265 | int ret_flags = 0; |
| 266 | vector svel, movement; // scaled velocity (per this frame) |
| 267 | matrix rotmat, new_pm; |
| 268 | angvec rotang; |
| 269 | vector rottime; |
| 270 | vector new_pos; |
| 271 | int new_room; |
| 272 | fvi_query fq; |
| 273 | fvi_info hit_info; |
| 274 | int fate; |
| 275 | |
| 276 | float key_timex1 = 0, key_timex0 = 0; |
| 277 | float key_timey1 = 0, key_timey0 = 0; |
| 278 | float key_timez1 = 0, key_timez0 = 0; |
| 279 | float key_timep1 = 0, key_timep0 = 0; |
| 280 | float key_timeh1 = 0, key_timeh0 = 0; |
| 281 | float key_timeb1 = 0, key_timeb0 = 0; |
| 282 | |
| 283 | if (!obj) |
| 284 | return 0; |
| 285 | |
| 286 | // check keyboard for slewing. |
| 287 | key_timex1 = ddio_KeyDownTime(KEY_PAD9); |
| 288 | key_timex0 = ddio_KeyDownTime(KEY_PAD7); |
| 289 | key_timey1 = ddio_KeyDownTime(KEY_PADMINUS); |
| 290 | key_timey0 = ddio_KeyDownTime(KEY_PADPLUS); |
| 291 | key_timez1 = ddio_KeyDownTime(KEY_PAD8); |
| 292 | key_timez0 = ddio_KeyDownTime(KEY_PAD2); |
| 293 | key_timep1 = ddio_KeyDownTime(KEY_LBRACKET); |
| 294 | key_timep0 = ddio_KeyDownTime(KEY_RBRACKET); |
| 295 | key_timeh1 = ddio_KeyDownTime(KEY_PAD6); |
| 296 | key_timeh0 = ddio_KeyDownTime(KEY_PAD4); |
| 297 | key_timeb1 = ddio_KeyDownTime(KEY_PAD1); |
| 298 | key_timeb0 = ddio_KeyDownTime(KEY_PAD3); |
| 299 | |
| 300 | if (!key_timep1) |
| 301 | key_timep1 = ddio_KeyDownTime(KEY_PAGEDOWN); |
| 302 | if (!key_timep0) |
| 303 | key_timep0 = ddio_KeyDownTime(KEY_PAGEUP); |
| 304 | |
| 305 | if (key_timex1 || key_timex0 || key_timey1 || key_timey0 || key_timez1 || key_timez0) |
| 306 | ret_flags |= SLEW_KEY; |
| 307 | if (key_timep1 || key_timep0 || key_timeh1 || key_timeh0 || key_timeb1 || key_timeb0) |
| 308 | ret_flags |= SLEW_KEY; |
| 309 | |
| 310 | if (key_timez0 || key_timez1) { |
| 311 | mprintf_at(1, 0, 0, "Timez0: %.2f ", key_timez0); |
| 312 | mprintf_at(1, 1, 0, "Timez1: %.2f ", key_timez1); |
| 313 | } |
| 314 | |
| 315 | // adjust physics info of object accordingly to keyboard input. |
| 316 | obj->mtype.phys_info.velocity.x += VEL_SPEED * (key_timex1 - key_timex0) * Slew_key_speed; |
| 317 | obj->mtype.phys_info.velocity.y += VEL_SPEED * (key_timey1 - key_timey0) * Slew_key_speed; |
| 318 | obj->mtype.phys_info.velocity.z += VEL_SPEED * (key_timez1 - key_timez0) * Slew_key_speed; |
| 319 | |
| 320 | // mprintf(0,"<%x %x %x>",obj->mtype.phys_info.velocity.x,obj->mtype.phys_info.velocity.y,obj->mtype.phys_info.velocity.z)); |
no test coverage detected