1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-08 09:37:53 +00:00
OpenMW/files/data/scripts/omw/mechanics/playercontroller.lua

47 lines
1.1 KiB
Lua

local core = require('openmw.core')
local nearby = require('openmw.nearby')
local self = require('openmw.self')
local types = require('openmw.types')
local cell = nil
local autodoors = {}
local function onCellChange()
autodoors = {}
for _, door in ipairs(nearby.doors) do
if door.type == types.ESM4Door and types.ESM4Door.record(door).isAutomatic then
autodoors[#autodoors + 1] = door
end
end
end
local autodoorActivationDist = 300
local lastAutoActivation = 0
local function processAutomaticDoors()
if core.getRealTime() - lastAutoActivation < 2 then
return
end
for _, door in ipairs(autodoors) do
if door.enabled and (door.position - self.position):length() < autodoorActivationDist then
print('Automatic activation of', door)
door:activateBy(self)
lastAutoActivation = core.getRealTime()
end
end
end
local function onUpdate()
if self.cell ~= cell then
cell = self.cell
onCellChange()
end
processAutomaticDoors()
end
return {
engineHandlers = {
onUpdate = onUpdate,
},
}