mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-21 09:23:53 +00:00
e00eb50587
This is not used anyway. There are features like smooth movement which remove all redundant points. Use single findStraightPath call instead of multiple.
84 lines
5.1 KiB
Lua
84 lines
5.1 KiB
Lua
local core = require('openmw.core')
|
|
local input = require('openmw.input')
|
|
local self = require('openmw.self')
|
|
local testing = require('testing_util')
|
|
local util = require('openmw.util')
|
|
local types = require('openmw.types')
|
|
local nearby = require('openmw.nearby')
|
|
|
|
input.setControlSwitch(input.CONTROL_SWITCH.Fighting, false)
|
|
input.setControlSwitch(input.CONTROL_SWITCH.Jumping, false)
|
|
input.setControlSwitch(input.CONTROL_SWITCH.Looking, false)
|
|
input.setControlSwitch(input.CONTROL_SWITCH.Magic, false)
|
|
input.setControlSwitch(input.CONTROL_SWITCH.VanityMode, false)
|
|
input.setControlSwitch(input.CONTROL_SWITCH.ViewMode, false)
|
|
|
|
testing.registerLocalTest('Player should be able to walk up stairs in Ebonheart docks (#4247)',
|
|
function()
|
|
local startPos = self.position
|
|
local dest = util.vector3(20296, -102194, 73)
|
|
local endTime = core.getSimulationTime() + 3
|
|
while (self.position.x <= dest.x or self.position.z <= dest.z) and core.getSimulationTime() < endTime do
|
|
self.controls.jump = false
|
|
self.controls.run = true
|
|
self.controls.movement = 1
|
|
self.controls.sideMovement = 0
|
|
self.controls.yawChange = 0
|
|
coroutine.yield()
|
|
end
|
|
testing.expectGreaterThan(self.position.x, dest.x, 'Final position, X')
|
|
testing.expectEqualWithDelta(self.position.y, dest.y, 10, 'Final position, Y')
|
|
testing.expectGreaterThan(self.position.z, dest.z, 'Final position, Z')
|
|
end)
|
|
|
|
testing.registerLocalTest('Guard in Imperial Prison Ship should find path (#7241)',
|
|
function()
|
|
local src = util.vector3(34.297367095947265625, 806.3817138671875, 109.278961181640625)
|
|
local dst = util.vector3(90, -90, -88)
|
|
local agentBounds = types.Actor.getPathfindingAgentBounds(self)
|
|
local options = {
|
|
agentBounds = agentBounds,
|
|
destinationTolerance = 0,
|
|
}
|
|
local status, path = nearby.findPath(src, dst, options)
|
|
testing.expectEqual(status, nearby.FIND_PATH_STATUS.Success, 'Status')
|
|
testing.expectLessOrEqual((util.vector2(path[path:size()].x, path[path:size()].y) - util.vector2(dst.x, dst.y)):length(), 1, 'Last path point x, y')
|
|
testing.expectLessOrEqual(path[path:size()].z - dst.z, 20, 'Last path point z')
|
|
if agentBounds.shapeType == nearby.COLLISION_SHAPE_TYPE.Aabb then
|
|
testing.expectThat(path, testing.elementsAreArray({
|
|
testing.closeToVector(util.vector3(34.29737091064453125, 806.3817138671875, 112.76610565185546875), 1e-1),
|
|
testing.closeToVector(util.vector3(15, 1102, 112.2945709228515625), 1e-1),
|
|
testing.closeToVector(util.vector3(-112, 1110, 112.2945709228515625), 1e-1),
|
|
testing.closeToVector(util.vector3(-118, 1393, 112.2945709228515625), 1e-1),
|
|
testing.closeToVector(util.vector3(-67.99993896484375, 1421.2000732421875, 112.2945709228515625), 1e-1),
|
|
testing.closeToVector(util.vector3(-33.999935150146484375, 1414.4000244140625, 112.2945709228515625), 1e-1),
|
|
testing.closeToVector(util.vector3(-6.79993534088134765625, 1380.4000244140625, 85.094573974609375), 1e-1),
|
|
testing.closeToVector(util.vector3(79, 724, -104.83390045166015625), 1e-1),
|
|
testing.closeToVector(util.vector3(84, 290.000030517578125, -104.83390045166015625), 1e-1),
|
|
testing.closeToVector(util.vector3(83.552001953125, 42.26399993896484375, -104.58989715576171875), 1e-1),
|
|
testing.closeToVector(util.vector3(89, -105, -98.72841644287109375), 1e-1),
|
|
testing.closeToVector(util.vector3(90, -90, -99.7056884765625), 1e-1),
|
|
}))
|
|
elseif agentBounds.shapeType == nearby.COLLISION_SHAPE_TYPE.Cylinder then
|
|
testing.expectThat(path, testing.elementsAreArray({
|
|
testing.closeToVector(util.vector3(34.29737091064453125, 806.3817138671875, 112.76610565185546875), 1e-1),
|
|
testing.closeToVector(util.vector3(-13.5999355316162109375, 1060.800048828125, 112.2945709228515625), 1e-1),
|
|
testing.closeToVector(util.vector3(-27.1999359130859375, 1081.2000732421875, 112.2945709228515625), 1e-1),
|
|
testing.closeToVector(util.vector3(-81.59993743896484375, 1128.800048828125, 112.2945709228515625), 1e-1),
|
|
testing.closeToVector(util.vector3(-101.99993896484375, 1156.0001220703125, 112.2945709228515625), 1e-1),
|
|
testing.closeToVector(util.vector3(-118, 1393, 112.2945709228515625), 1e-1),
|
|
testing.closeToVector(util.vector3(7, 1470, 114.73973846435546875), 1e-1),
|
|
testing.closeToVector(util.vector3(79, 724, -104.83390045166015625), 1e-1),
|
|
testing.closeToVector(util.vector3(84, 290.000030517578125, -104.83390045166015625), 1e-1),
|
|
testing.closeToVector(util.vector3(95, 27, -104.83390045166015625), 1e-1),
|
|
testing.closeToVector(util.vector3(90, -90, -104.83390045166015625), 1e-1),
|
|
}))
|
|
end
|
|
end)
|
|
|
|
return {
|
|
engineHandlers = {
|
|
onUpdate = testing.updateLocal,
|
|
},
|
|
eventHandlers = testing.eventHandlers
|
|
}
|