#include
Inherits pe_params.
Public Attributes | |
float | heightPivot |
offset from central ground position that is considered entity center | |
float | heightEye |
vertical offset of camera | |
Vec3 | sizeCollider |
collision cylinder dimensions | |
float | heightCollider |
vertical offset of collision geometry center | |
float | headRadius |
radius of the 'head' geometry (used for camera offset) | |
float | heightHead |
center.z of the head geometry | |
Vec3 | dirUnproj |
unprojection direction to test in case the new position overlaps with the environment (can be 0 for 'auto') | |
float | maxUnproj |
maximum allowed unprojection | |
int | bUseCapsule |
switches between capsule and cylinder collider geometry | |
float | groundContactEps |
the amount that the living needs to move upwards before ground contact is lost. defaults to which ever is greater 0.004, or 0.01*geometryHeight | |
Determines the dimensions of the main capsule (or cylinder) of a living / walking entity
#include
// Example for how a living (walking) character can be physicalized
void PhysicalizeLiving(IEntity& entity)
{
SEntityPhysicalizeParams physParams;
// Set the physics type to PE_LIVING
physParams.type = PE_LIVING;
// Set the mass to 90 kilograms
physParams.mass = 90;
// Living entities have to set the SEntityPhysicalizeParams::pPlayerDimensions field
pe_player_dimensions playerDimensions;
// Prefer usage of a cylinder instead of capsule
playerDimensions.bUseCapsule = 0;
// Specify the size of our cylinder
playerDimensions.sizeCollider = Vec3(0.3f, 0.3f, 0.935f * 0.5f);
// Keep pivot at the player's feet (defined in player geometry)
playerDimensions.heightPivot = 0.f;
// Offset collider upwards
playerDimensions.heightCollider = 1.f;
physParams.pPlayerDimensions = &playerDimensions;
// Living entities have to set the SEntityPhysicalizeParams::pPlayerDynamics field
pe_player_dynamics playerDynamics;
// Mass needs to be repeated in the pe_player_dynamics structure
playerDynamics.mass = physParams.mass;
physParams.pPlayerDynamics = &playerDynamics;
// Now physicalize the entity
entity.Physicalize(physParams);
}
// Example for how a living (walking) character's move direction can be modified
void MoveLiving(IPhysicalEntity& physicalEntity)
{
pe_action_move moveAction;
// Apply movement request directly to velocity
moveAction.iJump = 2;
moveAction.dir = Vec3(0, 1, 0);
physicalEntity.Action(&moveAction);
}