moveCharacter method
void
moveCharacter(
- int character,
- double dt,
- Vector3 velocity,
- CharacterState3D out, {
- required Vector3 stepDown,
- required Vector3 stepUp,
override
Moves character for one update at velocity: it slides along walls,
keeps to the floor (stepDown, pointing down; zero to turn off) and
climbs steps up to stepUp (pointing up; zero to turn off). Writes
where it ended up into out.
Implementation
@override
void moveCharacter(
int character,
double dt,
Vector3 velocity,
CharacterState3D out, {
required Vector3 stepDown,
required Vector3 stepUp,
}) {
if (!_myCharacter(character)) {
_clearState(out);
return;
}
final f = _f;
f
..[0] = velocity.x
..[1] = velocity.y
..[2] = velocity.z
..[3] = _gravity.x
..[4] = _gravity.y
..[5] = _gravity.z
..[6] = stepDown.x
..[7] = stepDown.y
..[8] = stepDown.z
..[9] = stepUp.x
..[10] = stepUp.y
..[11] = stepUp.z;
jj_character_step(character, dt, f, f + 3, f + 6, f + 9, _characterState);
_readState(out);
}