Fixed Shadow bugs and implemented scripting for trajectory rendering #407
|
@ -6017,6 +6017,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -6347,6 +6348,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: true
|
||||
Sleeping Enabled: true
|
||||
|
@ -6409,6 +6411,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: true
|
||||
Sleeping Enabled: true
|
||||
|
@ -6471,6 +6474,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: true
|
||||
Sleeping Enabled: true
|
||||
|
@ -6623,6 +6627,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -6674,6 +6679,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -6725,6 +6731,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -6776,6 +6783,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -6827,6 +6835,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -6878,6 +6887,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -6929,6 +6939,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -6980,6 +6991,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7031,6 +7043,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7082,6 +7095,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7133,6 +7147,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7184,6 +7199,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7235,6 +7251,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7286,6 +7303,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7337,6 +7355,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7388,6 +7407,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7439,6 +7459,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7490,6 +7511,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7541,6 +7563,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7592,6 +7615,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7643,6 +7667,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7700,6 +7725,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7741,6 +7767,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7782,6 +7809,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7823,6 +7851,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7864,6 +7893,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7921,6 +7951,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -7962,6 +7993,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8003,6 +8035,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8044,6 +8077,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8085,6 +8119,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8142,6 +8177,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8193,6 +8229,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8244,6 +8281,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8295,6 +8333,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8346,6 +8385,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8397,6 +8437,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8454,6 +8495,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8505,6 +8547,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8556,6 +8599,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8607,6 +8651,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8658,6 +8703,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8709,6 +8755,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8766,6 +8813,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8817,6 +8865,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8868,6 +8917,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8919,6 +8969,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -8970,6 +9021,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: true
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
@ -9027,6 +9079,7 @@
|
|||
Type: Dynamic
|
||||
Drag: 0.00999999978
|
||||
Angular Drag: 0.100000001
|
||||
Gravity Scale: 1
|
||||
Use Gravity: false
|
||||
Interpolate: false
|
||||
Sleeping Enabled: true
|
||||
|
|
|
@ -276,6 +276,7 @@ namespace SHADE
|
|||
localInvInertia[i] = 1.0f / localInvInertia[i];
|
||||
|
||||
|
||||
|
||||
// Build raycast layer from colliders. If none exist....then this never stops simulating technically.
|
||||
// I'm too lazy to handle that case, so I'll just throw an error.
|
||||
uint16_t raycastLayers = 0;
|
||||
|
@ -297,16 +298,17 @@ namespace SHADE
|
|||
raycastInfo.continuous = false;
|
||||
raycastInfo.layers = raycastLayers;
|
||||
|
||||
bool terminate = true;
|
||||
bool terminate = true;
|
||||
int iterationCounter = simInfo.maxSteps;
|
||||
do
|
||||
{
|
||||
raycastInfo.distance = linearVelocity.Length();
|
||||
raycastInfo.ray.position = bodyPosition;
|
||||
raycastInfo.ray.direction = SHVec3::Normalise(linearVelocity);
|
||||
|
||||
terminate = !Raycast(raycastInfo).empty();
|
||||
terminate = !Raycast(raycastInfo).empty() || iterationCounter == 0;
|
||||
if (terminate)
|
||||
break;
|
||||
return;
|
||||
|
||||
// Compute world space data
|
||||
const SHMatrix R = SHMatrix::Rotate(bodyOrientation);
|
||||
|
@ -348,7 +350,7 @@ namespace SHADE
|
|||
const SHQuaternion QV = SHQuaternion{ angularVelocity.x * simInfo.timeStep, angularVelocity.y * simInfo.timeStep, angularVelocity.z * simInfo.timeStep, 0.0f } * 0.5f;
|
||||
|
||||
bodyPosition += linearVelocity * simInfo.timeStep;
|
||||
bodyOrientation += bodyOrientation * QV;
|
||||
bodyOrientation += bodyOrientation * QV * SHQuaternion::FromEuler(ANGULAR_LOCK);
|
||||
bodyOrientation = SHQuaternion::Normalise(bodyOrientation);
|
||||
|
||||
// Clear forces after the first frame
|
||||
|
@ -362,6 +364,8 @@ namespace SHADE
|
|||
|
||||
positions.emplace_back(bodyPosition);
|
||||
|
||||
--iterationCounter;
|
||||
|
||||
} while (true);
|
||||
}
|
||||
|
||||
|
|
|
@ -50,19 +50,39 @@ namespace SHADE
|
|||
|
||||
/**
|
||||
* @brief
|
||||
* Used to simulate the motion of a rigid body until it hits something.
|
||||
* Used to simulate the motion of a rigid body, ignoring collision detection and response.
|
||||
* @param bodyEID
|
||||
* The EntityID of the Rigid Body to simulate.
|
||||
* @param force
|
||||
* The force applied onto the Rigid Body.
|
||||
* @param forceOffset
|
||||
* The position to apply the force onto the body relative to it's local Center of Mass.
|
||||
* @param torque
|
||||
* The torque to apply onto the Rigid Body.
|
||||
* @param continuousForce
|
||||
* If the force should be applied every step throughout the simulation. Defaults to false. <br/>
|
||||
* True : The force indicated is added to the body every step, therefore it has constant acceleration.
|
||||
* False: The force is applied only in the first step, therefore it has constant speed.
|
||||
* @param timeStep
|
||||
* The timestep for each step of the simulation. Defaults to 0.016s (The default Fixed DT)
|
||||
* @param maxSteps
|
||||
* The number of steps to run the simulation for. Defaults to -1.
|
||||
* < 0 : Runs until the object may hit something. Hit detection is done through raycasting.
|
||||
* = 0 : Runs only the current step and checks if it may hit something.
|
||||
* > 0 : Runs for the given number of steps or until it may hit something.
|
||||
*/
|
||||
struct SimulateBodyInfo
|
||||
{
|
||||
EntityID bodyEID = MAX_EID;
|
||||
EntityID bodyEID = MAX_EID;
|
||||
|
||||
SHVec3 force = SHVec3::Zero;
|
||||
SHVec3 forceOffset = SHVec3::Zero;
|
||||
SHVec3 torque = SHVec3::Zero;
|
||||
SHVec3 force = SHVec3::Zero;
|
||||
SHVec3 forceOffset = SHVec3::Zero;
|
||||
SHVec3 torque = SHVec3::Zero;
|
||||
|
||||
// Whether or not to clear the force after the first iteration
|
||||
bool continuousForce = false;
|
||||
float timeStep = static_cast<float>(SHPhysicsConstants::DEFAULT_FIXED_DT);
|
||||
bool continuousForce = false;
|
||||
float timeStep = static_cast<float>(SHPhysicsConstants::DEFAULT_FIXED_DT);
|
||||
int maxSteps = -1;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue