diff -U2 -r /var/lib/copr-rpmbuild/results/openmw-git/upstream-unpacked/Source0/openmw-master/apps/openmw/mwmechanics/aiwander.cpp /var/lib/copr-rpmbuild/results/openmw-git/srpm-unpacked/openmw-master.tar.bz2-extract/openmw-master/apps/openmw/mwmechanics/aiwander.cpp --- /var/lib/copr-rpmbuild/results/openmw-git/upstream-unpacked/Source0/openmw-master/apps/openmw/mwmechanics/aiwander.cpp 2026-06-29 00:03:31.000000000 +0000 +++ /var/lib/copr-rpmbuild/results/openmw-git/srpm-unpacked/openmw-master.tar.bz2-extract/openmw-master/apps/openmw/mwmechanics/aiwander.cpp 2026-06-28 00:21:35.000000000 +0000 @@ -225,7 +225,4 @@ return true; // Don't bother with dead actors - if (!actor.getClass().isMobile(actor)) - return false; // Don't bother with immobile creatures - // get or create temporary storage AiWanderStorage& storage = state.get(); diff -U2 -r /var/lib/copr-rpmbuild/results/openmw-git/upstream-unpacked/Source0/openmw-master/components/nifosg/particle.cpp /var/lib/copr-rpmbuild/results/openmw-git/srpm-unpacked/openmw-master.tar.bz2-extract/openmw-master/components/nifosg/particle.cpp --- /var/lib/copr-rpmbuild/results/openmw-git/upstream-unpacked/Source0/openmw-master/components/nifosg/particle.cpp 2026-06-29 00:03:31.000000000 +0000 +++ /var/lib/copr-rpmbuild/results/openmw-git/srpm-unpacked/openmw-master.tar.bz2-extract/openmw-master/components/nifosg/particle.cpp 2026-06-28 00:21:35.000000000 +0000 @@ -646,15 +646,12 @@ void PlanarCollider::operate(osgParticle::Particle* particle, double dt) { - const osg::Vec3 normal = mPlaneInParticleSpace.getNormal(); - // Does the particle in question move towards the collider? - float distToPlane = mPlaneInParticleSpace.distance(particle->getPosition()); - float velDotProduct = particle->getVelocity() * normal; - if (distToPlane * velDotProduct >= 0.0f) + float velDotProduct = particle->getVelocity() * mPlaneInParticleSpace.getNormal(); + if (velDotProduct <= 0) return; - // Would it cross the collider? - float nextDistToPlane = distToPlane + velDotProduct * static_cast(dt); - if (distToPlane * nextDistToPlane > 0.0f) + // Does it intersect the collider's plane? + osg::BoundingSphere bs(particle->getPosition(), 0.f); + if (mPlaneInParticleSpace.intersect(bs) != 1) return; @@ -669,5 +666,5 @@ // Deflect the particle - osg::Vec3 reflectedVelocity = particle->getVelocity() - normal * (2 * velDotProduct); + osg::Vec3 reflectedVelocity = particle->getVelocity() - mPlaneInParticleSpace.getNormal() * (2 * velDotProduct); reflectedVelocity *= mBounceFactor; particle->setVelocity(reflectedVelocity);