From 83101d3d11e58a1b531a3dce864ef306a6e16cbb Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Fri, 3 Jan 2014 15:31:16 -0800 Subject: [PATCH 1/2] reduce elasticity to be less than 1 --- interface/src/avatar/MyAvatar.cpp | 2 +- .../particles/src/ParticleCollisionSystem.cpp | 36 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 0ef728adde..7fc65fef66 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -801,7 +801,7 @@ void MyAvatar::updateCollisionWithEnvironment(float deltaTime) { void MyAvatar::updateCollisionWithVoxels(float deltaTime) { float radius = _collisionRadius; - const float VOXEL_ELASTICITY = 1.4f; + const float VOXEL_ELASTICITY = 0.4f; const float VOXEL_DAMPING = 0.0; const float VOXEL_COLLISION_FREQUENCY = 0.5f; glm::vec3 penetration; diff --git a/libraries/particles/src/ParticleCollisionSystem.cpp b/libraries/particles/src/ParticleCollisionSystem.cpp index e1286f91e2..08cba9ba8c 100644 --- a/libraries/particles/src/ParticleCollisionSystem.cpp +++ b/libraries/particles/src/ParticleCollisionSystem.cpp @@ -69,28 +69,28 @@ void ParticleCollisionSystem::checkParticle(Particle* particle) { void ParticleCollisionSystem::updateCollisionWithVoxels(Particle* particle) { glm::vec3 center = particle->getPosition() * (float)TREE_SCALE; float radius = particle->getRadius() * (float)TREE_SCALE; - const float VOXEL_ELASTICITY = 1.4f; - const float VOXEL_DAMPING = 0.0; - const float VOXEL_COLLISION_FREQUENCY = 0.5f; + const float ELASTICITY = 0.4f; + const float DAMPING = 0.0; + const float COLLISION_FREQUENCY = 0.5f; glm::vec3 penetration; if (_voxels->findSpherePenetration(center, radius, penetration)) { penetration /= (float)TREE_SCALE; - updateCollisionSound(particle, penetration, VOXEL_COLLISION_FREQUENCY); - applyHardCollision(particle, penetration, VOXEL_ELASTICITY, VOXEL_DAMPING); + updateCollisionSound(particle, penetration, COLLISION_FREQUENCY); + applyHardCollision(particle, penetration, ELASTICITY, DAMPING); } } void ParticleCollisionSystem::updateCollisionWithParticles(Particle* particle) { glm::vec3 center = particle->getPosition() * (float)TREE_SCALE; float radius = particle->getRadius() * (float)TREE_SCALE; - const float VOXEL_ELASTICITY = 1.4f; - const float VOXEL_DAMPING = 0.0; - const float VOXEL_COLLISION_FREQUENCY = 0.5f; + const float ELASTICITY = 1.4f; + const float DAMPING = 0.0; + const float COLLISION_FREQUENCY = 0.5f; glm::vec3 penetration; Particle* penetratedParticle; if (_particles->findSpherePenetration(center, radius, penetration, (void**)&penetratedParticle)) { penetration /= (float)TREE_SCALE; - updateCollisionSound(particle, penetration, VOXEL_COLLISION_FREQUENCY); + updateCollisionSound(particle, penetration, COLLISION_FREQUENCY); // apply a hard collision to both particles of half the penetration each @@ -108,8 +108,8 @@ void ParticleCollisionSystem::updateCollisionWithParticles(Particle* particle) { particleShare = 0.5f; penetratedParticleShare = -0.5f; } - applyHardCollision(particle, penetration * particleShare, VOXEL_ELASTICITY, VOXEL_DAMPING); - applyHardCollision(penetratedParticle, penetration * penetratedParticleShare, VOXEL_ELASTICITY, VOXEL_DAMPING); + applyHardCollision(particle, penetration * particleShare, ELASTICITY, DAMPING); + applyHardCollision(penetratedParticle, penetration * penetratedParticleShare, ELASTICITY, DAMPING); } } @@ -123,9 +123,9 @@ void ParticleCollisionSystem::updateCollisionWithAvatars(Particle* particle) { //printf("updateCollisionWithAvatars()...\n"); glm::vec3 center = particle->getPosition() * (float)TREE_SCALE; float radius = particle->getRadius() * (float)TREE_SCALE; - const float VOXEL_ELASTICITY = 1.4f; - const float VOXEL_DAMPING = 0.0; - const float VOXEL_COLLISION_FREQUENCY = 0.5f; + const float ELASTICITY = 0.4f; + const float DAMPING = 0.0; + const float COLLISION_FREQUENCY = 0.5f; glm::vec3 penetration; const PalmData* collidingPalm = NULL; @@ -140,7 +140,7 @@ void ParticleCollisionSystem::updateCollisionWithAvatars(Particle* particle) { // if the particle penetrates the hand, then apply a hard collision if (handData->findSpherePenetration(center, radius, penetration, collidingPalm)) { penetration /= (float)TREE_SCALE; - updateCollisionSound(particle, penetration, VOXEL_COLLISION_FREQUENCY); + updateCollisionSound(particle, penetration, COLLISION_FREQUENCY); // determine if the palm that collided was moving, if so, then we add that palm velocity as well... glm::vec3 addedVelocity = NO_ADDED_VELOCITY; @@ -150,7 +150,7 @@ void ParticleCollisionSystem::updateCollisionWithAvatars(Particle* particle) { addedVelocity = palmVelocity; } - applyHardCollision(particle, penetration, VOXEL_ELASTICITY, VOXEL_DAMPING, addedVelocity); + applyHardCollision(particle, penetration, ELASTICITY, DAMPING, addedVelocity); } } @@ -168,7 +168,7 @@ void ParticleCollisionSystem::updateCollisionWithAvatars(Particle* particle) { // if the particle penetrates the hand, then apply a hard collision if (handData->findSpherePenetration(center, radius, penetration, collidingPalm)) { penetration /= (float)TREE_SCALE; - updateCollisionSound(particle, penetration, VOXEL_COLLISION_FREQUENCY); + updateCollisionSound(particle, penetration, COLLISION_FREQUENCY); // determine if the palm that collided was moving, if so, then we add that palm velocity as well... glm::vec3 addedVelocity = NO_ADDED_VELOCITY; @@ -178,7 +178,7 @@ void ParticleCollisionSystem::updateCollisionWithAvatars(Particle* particle) { addedVelocity = palmVelocity; } - applyHardCollision(particle, penetration, VOXEL_ELASTICITY, VOXEL_DAMPING, addedVelocity); + applyHardCollision(particle, penetration, ELASTICITY, DAMPING, addedVelocity); } } From 6518e7068871302ef255a6c20aee3cfaae258efd Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 3 Jan 2014 16:27:57 -0800 Subject: [PATCH 2/2] Minor cast enforcement during initialization. --- interface/src/avatar/MyAvatar.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 79372109fb..0fa4936af0 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -26,11 +26,11 @@ using namespace std; const glm::vec3 DEFAULT_UP_DIRECTION(0.0f, 1.0f, 0.0f); -const float YAW_MAG = 500.0; +const float YAW_MAG = 500.0f; const float PITCH_MAG = 100.0f; const float COLLISION_RADIUS_SCALAR = 1.2; // pertains to avatar-to-avatar collisions -const float COLLISION_BALL_FORCE = 200.0; // pertains to avatar-to-avatar collisions -const float COLLISION_BODY_FORCE = 30.0; // pertains to avatar-to-avatar collisions +const float COLLISION_BALL_FORCE = 200.0f; // pertains to avatar-to-avatar collisions +const float COLLISION_BODY_FORCE = 30.0f; // pertains to avatar-to-avatar collisions const float COLLISION_RADIUS_SCALE = 0.125f; const float MOUSE_RAY_TOUCH_RANGE = 0.01f; const bool USING_HEAD_LEAN = false; @@ -779,7 +779,7 @@ void MyAvatar::updateCollisionWithEnvironment(float deltaTime) { glm::vec3 up = getBodyUpDirection(); float radius = _collisionRadius; const float ENVIRONMENT_SURFACE_ELASTICITY = 1.0f; - const float ENVIRONMENT_SURFACE_DAMPING = 0.01; + const float ENVIRONMENT_SURFACE_DAMPING = 0.01f; const float ENVIRONMENT_COLLISION_FREQUENCY = 0.05f; glm::vec3 penetration; if (Application::getInstance()->getEnvironment()->findCapsulePenetration( @@ -795,7 +795,7 @@ void MyAvatar::updateCollisionWithEnvironment(float deltaTime) { void MyAvatar::updateCollisionWithVoxels(float deltaTime) { float radius = _collisionRadius; const float VOXEL_ELASTICITY = 0.4f; - const float VOXEL_DAMPING = 0.0; + const float VOXEL_DAMPING = 0.0f; const float VOXEL_COLLISION_FREQUENCY = 0.5f; glm::vec3 penetration; if (Application::getInstance()->getVoxels()->findCapsulePenetration(