History

Gravity Implementation

Cain Kilgore committed 9 years ago

Commit c2e342d1 parent f7410834 files · +32 −26Browse files

Showing the changes to libraries/physics/src/CharacterController.cpp (1 of 4 files). Show all

Unified · Split

libraries/physics/src/CharacterController.cpp+22−15
@@ -20,7 +20,7 @@ · 19 unmodified lines
20const btVector3 LOCAL_UP_AXIS(0.0f, 1.0f, 0.0f);20const btVector3 LOCAL_UP_AXIS(0.0f, 1.0f, 0.0f);
21const float JUMP_SPEED = 3.5f;21const float JUMP_SPEED = 3.5f;
22const float MAX_FALL_HEIGHT = 20.0f;22const float MAX_FALL_HEIGHT = 20.0f;
23const float DEFAULT_CHARACTER_GRAVITY = -5.0f;23float DEFAULT_CHARACTER_GRAVITY = -5.0f;
24 24
25#ifdef DEBUG_STATE_CHANGE25#ifdef DEBUG_STATE_CHANGE
26#define SET_STATE(desiredState, reason) setState(desiredState, reason)26#define SET_STATE(desiredState, reason) setState(desiredState, reason)
@@ -354,6 +354,27 @@ static const char* stateToStr(CharacterController::State state) { · 327 unmodified lines
354}354}
355#endif // #ifdef DEBUG_STATE_CHANGE355#endif // #ifdef DEBUG_STATE_CHANGE
356 356
357void CharacterController::updateGravity() {
358 int16_t collisionGroup = computeCollisionGroup();
359 if (_state == State::Hover || collisionGroup == BULLET_COLLISION_GROUP_COLLISIONLESS) {
360 _gravity = 0.0f;
361 } else {
362 _gravity = DEFAULT_CHARACTER_GRAVITY;
363 }
364 if (_rigidBody) {
365 _rigidBody->setGravity(_gravity * _currentUp);
366 }
367}
368
369
370void CharacterController::setGravity(float gravity) {
371 DEFAULT_CHARACTER_GRAVITY = gravity;
372}
373
374float CharacterController::getGravity() {
375 return DEFAULT_CHARACTER_GRAVITY;
376}
377
357#ifdef DEBUG_STATE_CHANGE378#ifdef DEBUG_STATE_CHANGE
358void CharacterController::setState(State desiredState, const char* reason) {379void CharacterController::setState(State desiredState, const char* reason) {
359#else380#else
@@ -372,20 +393,6 @@ void CharacterController::setState(State desiredState) { · 12 unmodified lines
372 }393 }
373}394}
374 395
375void CharacterController::updateGravity(float gravity = DEFAULT_CHARACTER_GRAVITY) {
376 int16_t collisionGroup = computeCollisionGroup();
377 if (_state == State::Hover || collisionGroup == BULLET_COLLISION_GROUP_COLLISIONLESS) {
378 _gravity = 0.0f;
379 } else {
380 _gravity = gravity;
381 }
382 if (_rigidBody) {
383 _rigidBody->setGravity(_gravity * _currentUp);
384 }
385 emit gravityChanged();
386}
387
388
389void CharacterController::setLocalBoundingBox(const glm::vec3& minCorner, const glm::vec3& scale) {396void CharacterController::setLocalBoundingBox(const glm::vec3& minCorner, const glm::vec3& scale) {
390 float x = scale.x;397 float x = scale.x;
391 float z = scale.z;398 float z = scale.z;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t