mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 09:48:44 +02:00
Fall intersection off with angle to other avatar.
This commit is contained in:
parent
475528f112
commit
197adce4de
1 changed files with 7 additions and 1 deletions
|
@ -547,13 +547,19 @@ void Application::paintGL() {
|
||||||
avatar->getBoundingRadius() + pushbackRadius) {
|
avatar->getBoundingRadius() + pushbackRadius) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
float angle = angleBetween(avatar->getPosition() - _myCamera.getTargetPosition(), planeNormal);
|
||||||
|
if (angle > PI_OVER_TWO) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
float scale = qMax(angle / PI_OVER_TWO, 0.0f);
|
||||||
|
scale = 1.0f - powf(scale, 4.0f);
|
||||||
static CollisionList collisions(64);
|
static CollisionList collisions(64);
|
||||||
collisions.clear();
|
collisions.clear();
|
||||||
if (!avatar->findPlaneCollisions(plane, collisions)) {
|
if (!avatar->findPlaneCollisions(plane, collisions)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < collisions.size(); i++) {
|
for (int i = 0; i < collisions.size(); i++) {
|
||||||
pushback = qMax(pushback, glm::length(collisions.getCollision(i)->_penetration));
|
pushback = qMax(pushback, glm::length(collisions.getCollision(i)->_penetration) * scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const float MAX_PUSHBACK = 0.35f;
|
const float MAX_PUSHBACK = 0.35f;
|
||||||
|
|
Loading…
Reference in a new issue