pId = GetIntParam("id", 1) gate = nil shape = nil light = nil trigger = nil frame = nil broken = nil function init() gate = FindBody("gate") shape = FindShape("gate") light = FindShape("light") trigger = FindTrigger("trigger") frame = 0 broken = false end function update(dt) frame = frame + 1 end function tick(dt) local gatePos = GetBodyTransform(gate).pos local triggerTransform = GetTriggerTransform(trigger) triggerTransform.pos[1] = gatePos[1] triggerTransform.pos[3] = gatePos[3] SetTriggerTransform(trigger, triggerTransform) local reg = "level.track.gate."..pId local active = IsBodyJointedToStatic(gate) if active then SetShapeEmissiveScale(shape, 1.0) else SetShapeEmissiveScale(shape, 0.0) if not broken then SetString("hud.notification", GetTranslatedStringByKey("UI_HUD_NOTE_GATE_BROKEN")) end broken = true SetBool("level.track.gatebroken", broken) end local vehicle = GetPlayerVehicle() SetBool(reg, not broken and IsVehicleInTrigger(trigger, vehicle)) local emissive = 0.0 if GetBool(reg) then emissive = 1.0 end SetShapeEmissiveScale(light, emissive) end