void afxEA_PhysicalZone::ea_set_scope_status(bool in_scope) { if (physical_zone) { if (in_scope && !physical_zone->isActive()) physical_zone->activate(); else if (!in_scope && physical_zone->isActive()) physical_zone->deactivate(); } }
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; }