diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index d11083908c..79372109fb 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -794,7 +794,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 173bd0738b..c2d4093f9b 100644 --- a/libraries/particles/src/ParticleCollisionSystem.cpp +++ b/libraries/particles/src/ParticleCollisionSystem.cpp @@ -69,9 +69,9 @@ void ParticleCollisionSystem::checkParticle(Particle* particle) { void ParticleCollisionSystem::updateCollisionWithVoxels(Particle* particle) { glm::vec3 center = particle->getPosition() * static_cast(TREE_SCALE); float radius = particle->getRadius() * static_cast(TREE_SCALE); - const float VOXEL_ELASTICITY = 0.4f; // fraction of momentum conserved at collision - const float VOXEL_DAMPING = 0.0f; - const float VOXEL_COLLISION_FREQUENCY = 0.5f; + const float ELASTICITY = 0.4f; + const float DAMPING = 0.0f; + const float COLLISION_FREQUENCY = 0.5f; glm::vec3 penetration; VoxelDetail* voxelDetails = NULL; if (_voxels->findSpherePenetration(center, radius, penetration, (void**)&voxelDetails)) { @@ -80,8 +80,8 @@ void ParticleCollisionSystem::updateCollisionWithVoxels(Particle* particle) { particle->collisionWithVoxel(voxelDetails); 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); delete voxelDetails; // cleanup returned details } @@ -90,9 +90,9 @@ void ParticleCollisionSystem::updateCollisionWithVoxels(Particle* particle) { void ParticleCollisionSystem::updateCollisionWithParticles(Particle* particle) { glm::vec3 center = particle->getPosition() * static_cast(TREE_SCALE); float radius = particle->getRadius() * static_cast(TREE_SCALE); - const float VOXEL_ELASTICITY = 1.4f; - const float VOXEL_DAMPING = 0.0f; - const float VOXEL_COLLISION_FREQUENCY = 0.5f; + const float ELASTICITY = 1.4f; + const float DAMPING = 0.0f; + const float COLLISION_FREQUENCY = 0.5f; glm::vec3 penetration; Particle* penetratedParticle; if (_particles->findSpherePenetration(center, radius, penetration, (void**)&penetratedParticle)) { @@ -102,7 +102,8 @@ void ParticleCollisionSystem::updateCollisionWithParticles(Particle* particle) { penetratedParticle->collisionWithParticle(particle); 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 float particleShare, penetratedParticleShare; @@ -119,8 +120,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); } } @@ -134,9 +135,9 @@ void ParticleCollisionSystem::updateCollisionWithAvatars(Particle* particle) { //printf("updateCollisionWithAvatars()...\n"); glm::vec3 center = particle->getPosition() * static_cast(TREE_SCALE); float radius = particle->getRadius() * static_cast(TREE_SCALE); - const float VOXEL_ELASTICITY = 1.4f; - const float VOXEL_DAMPING = 0.0f; - const float VOXEL_COLLISION_FREQUENCY = 0.5f; + const float ELASTICITY = 0.4f; + const float DAMPING = 0.0f; + const float COLLISION_FREQUENCY = 0.5f; glm::vec3 penetration; const PalmData* collidingPalm = NULL; @@ -156,7 +157,7 @@ void ParticleCollisionSystem::updateCollisionWithAvatars(Particle* particle) { // TODO: dot collidingPalm and hand velocities and skip collision when they are moving apart. // apply a hard collision when ball collides with hand 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; @@ -172,7 +173,7 @@ void ParticleCollisionSystem::updateCollisionWithAvatars(Particle* particle) { penetration /= (float)TREE_SCALE; updateCollisionSound(particle, penetration, VOXEL_COLLISION_FREQUENCY); glm::vec3 addedVelocity = avatar->getVelocity(); - applyHardCollision(particle, penetration, VOXEL_ELASTICITY, VOXEL_DAMPING, addedVelocity); + applyHardCollision(particle, penetration, ELASTICITY, DAMPING, addedVelocity); } } @@ -191,7 +192,7 @@ void ParticleCollisionSystem::updateCollisionWithAvatars(Particle* particle) { if (handData->findSpherePenetration(center, radius, penetration, collidingPalm)) { // apply a hard collision when ball collides with hand 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; @@ -201,7 +202,7 @@ void ParticleCollisionSystem::updateCollisionWithAvatars(Particle* particle) { addedVelocity = palmVelocity; } - applyHardCollision(particle, penetration, VOXEL_ELASTICITY, VOXEL_DAMPING, addedVelocity); + applyHardCollision(particle, penetration, ELASTICITY, DAMPING, addedVelocity); } else if (avatar->findSpherePenetration(center, radius, penetration)) { penetration /= (float)TREE_SCALE;