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

Function PhysicsDoSimLinear

physics/physics.cpp:651–677  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

649}
650
651void PhysicsDoSimLinear(const object &obj, const vector &pos, const vector &force, vector &velocity,
652 vector &movementVec, vector &movementPos, float simTime, int count) {
653 // Determine velocity
654 if (obj.mtype.phys_info.flags & PF_FIXED_VELOCITY) {
655 movementVec = velocity * simTime;
656 movementPos = pos + movementVec;
657 return;
658 }
659
660 vector forceToUse = force;
661 if (!ROOMNUM_OUTSIDE(obj.roomnum) && !(obj.mtype.phys_info.flags & PF_LOCK_MASK) &&
662 Rooms[obj.roomnum].wind != Zero_vector && count == 0 && obj.mtype.phys_info.drag > 0.0f &&
663 !(obj.type == OBJ_POWERUP && Level_powerups_ignore_wind)) {
664 // Factor in outside wind
665 const vector &wind = Rooms[obj.roomnum].wind;
666 vector deltaForce = wind * obj.mtype.phys_info.drag * 16.0f;
667 forceToUse += deltaForce;
668 }
669
670 PhysicsApplyConstantForce(obj, movementPos, velocity, movementVec, forceToUse, simTime);
671
672#ifdef _DEBUG
673 if (Physics_player_verbose && obj.type == OBJ_PLAYER) {
674 mprintf(0, "Player Velocity = %f(%f)\n", vm_GetMagnitude(&velocity), vm_GetMagnitude(&movementVec) / simTime);
675 }
676#endif
677}
678
679// -----------------------------------------------------------------------------------------------------------
680// Simulate a physics object for this frame

Callers 2

do_physics_simFunction · 0.85
DoThinkFrameMethod · 0.85

Calls 2

vm_GetMagnitudeFunction · 0.50

Tested by

no test coverage detected