Пример #1
0
void physicalZoneFind(SceneObject* obj, void *key)
{    
   PROFILE_SCOPE( physicalZoneFind );

   ContainerQueryInfo *info = static_cast<ContainerQueryInfo*>(key);
   PhysicalZone* pz = dynamic_cast<PhysicalZone*>(obj);
   AssertFatal(pz != NULL, "Error, not a physical zone!");
   if (pz == NULL || pz->testBox(info->box) == false)
      return;

   if (pz->isActive()) {
      info->gravityScale *= pz->getGravityMod();
	  info->airResistanceScale *= pz->getAirResistanceMod();
      info->appliedForce += pz->getForce();
   }
}
void physicalZoneFind(SceneObject* obj, void *key)
{    
   PROFILE_SCOPE( physicalZoneFind );

   ContainerQueryInfo *info = static_cast<ContainerQueryInfo*>(key);
   PhysicalZone* pz = dynamic_cast<PhysicalZone*>(obj);
   AssertFatal(pz != NULL, "Error, not a physical zone!");
   if (pz == NULL || pz->testBox(info->box) == false)
      return;

   if (pz->isActive()) {
      info->gravityScale *= pz->getGravityMod();
      // AFX CODE BLOCK (enhanced-physical-zone) <<
      Point3F center; 
      info->box.getCenter(&center);
      info->appliedForce += pz->getForce(&center);
      /* ORIGINAL CODE
      info->appliedForce += pz->getForce();
      */
      // AFX CODE BLOCK (enhanced-physical-zone) >>
   }
}