Пример #1
0
bool afxEA_PhysicalZone::ea_update(F32 dt)
{
  if (!physical_zone)
  {
    // create and register effect
    physical_zone = new PhysicalZone();
    physical_zone->mVelocityMod = zone_data->mVelocityMod;
    physical_zone->mGravityMod = zone_data->mGravityMod;
    physical_zone->mAppliedForce = zone_data->mAppliedForce;
    physical_zone->force_type = zone_data->force_type;
    physical_zone->orient_force = zone_data->orient_force;
    physical_zone->setField("polyhedron", zone_data->mPolyhedron);

    if (!physical_zone->registerObject())
    {
      delete physical_zone;
      physical_zone = 0;
      Con::errorf("afxEA_PhysicalZone::ea_update() -- effect failed to register.");
      return false;
    }
    deleteNotify(physical_zone);
    physical_zone->activate();
  }

  if (physical_zone)
  {
    if (zone_data->exclude_cons_obj)
    {
      afxConstraint* pos_constraint = getPosConstraint();
      set_cons_object((pos_constraint) ? pos_constraint->getSceneObject() : 0);
    }

    if (do_fades)
      physical_zone->setFadeAmount(fade_value);
    physical_zone->setTransform(updated_xfm);
  }

  return true;
}