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
2020 const btVector3 LOCAL_UP_AXIS(0.0f, 1.0f, 0.0f);
2121 const float JUMP_SPEED = 3.5f;
2222 const float MAX_FALL_HEIGHT = 20.0f;
23−const float DEFAULT_CHARACTER_GRAVITY = -5.0f;
23+float DEFAULT_CHARACTER_GRAVITY = -5.0f;
2424
2525 #ifdef DEBUG_STATE_CHANGE
2626 #define SET_STATE(desiredState, reason) setState(desiredState, reason)
@@ -354,6 +354,27 @@ static const char* stateToStr(CharacterController::State state) { · 327 unmodified lines
354354 }
355355 #endif // #ifdef DEBUG_STATE_CHANGE
356356
357+void 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+
370+void CharacterController::setGravity(float gravity) {
371+ DEFAULT_CHARACTER_GRAVITY = gravity;
372+}
373+
374+float CharacterController::getGravity() {
375+ return DEFAULT_CHARACTER_GRAVITY;
376+}
377+
357378 #ifdef DEBUG_STATE_CHANGE
358379 void CharacterController::setState(State desiredState, const char* reason) {
359380 #else
@@ -372,20 +393,6 @@ void CharacterController::setState(State desiredState) { · 12 unmodified lines
372393 }
373394 }
374395
375−void 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−
389396 void CharacterController::setLocalBoundingBox(const glm::vec3& minCorner, const glm::vec3& scale) {
390397 float x = scale.x;
391398 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