MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / SlewFrame

Function SlewFrame

Descent3/SLEW.cpp:263–499  ·  view source on GitHub ↗

Moves the object for one frame

Source from the content-addressed store, hash-verified

261
262// Moves the object for one frame
263int 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));

Callers 2

OnIdleMethod · 0.85
ObjDoFrameFunction · 0.85

Calls 10

ddio_KeyDownTimeFunction · 0.85
joy_GetPosFunction · 0.85
ObjSetOrientFunction · 0.85
FindPointRoomFunction · 0.85
fvi_FindIntersectionFunction · 0.85
TERRAIN_REGIONFunction · 0.85
ObjSetPosFunction · 0.85
vm_AnglesToMatrixFunction · 0.50
vm_OrthogonalizeFunction · 0.50
vm_TransposeMatrixFunction · 0.50

Tested by

no test coverage detected