mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-25 17:56:37 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local testing = require('testing_util')
 | |
| local self = require('openmw.self')
 | |
| local util = require('openmw.util')
 | |
| local core = require('openmw.core')
 | |
| local input = require('openmw.input')
 | |
| local types = require('openmw.types')
 | |
| 
 | |
| 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('playerMovement',
 | |
|     function()
 | |
|         local startTime = core.getSimulationTime()
 | |
|         local pos = self.position
 | |
| 
 | |
|         while core.getSimulationTime() < startTime + 0.5 do
 | |
|             self.controls.jump = false
 | |
|             self.controls.run = true
 | |
|             self.controls.movement = 0
 | |
|             self.controls.sideMovement = 0
 | |
|             local progress = (core.getSimulationTime() - startTime) / 0.5
 | |
|             self.controls.yawChange = util.normalizeAngle(math.rad(90) * progress - self.rotation.z)
 | |
|             coroutine.yield()
 | |
|         end
 | |
|         testing.expectEqualWithDelta(self.rotation.z, math.rad(90), 0.05, 'Incorrect rotation')
 | |
| 
 | |
|         while core.getSimulationTime() < startTime + 1.5 do
 | |
|             self.controls.jump = false
 | |
|             self.controls.run = true
 | |
|             self.controls.movement = 1
 | |
|             self.controls.sideMovement = 0
 | |
|             self.controls.yawChange = 0
 | |
|             coroutine.yield()
 | |
|         end
 | |
|         direction = (self.position - pos) / types.Actor.runSpeed(self)
 | |
|         testing.expectEqualWithDelta(direction.x, 1, 0.1, 'Run forward, X coord')
 | |
|         testing.expectEqualWithDelta(direction.y, 0, 0.1, 'Run forward, Y coord')
 | |
| 
 | |
|         pos = self.position
 | |
|         while core.getSimulationTime() < startTime + 2.5 do
 | |
|             self.controls.jump = false
 | |
|             self.controls.run = false
 | |
|             self.controls.movement = -1
 | |
|             self.controls.sideMovement = -1
 | |
|             self.controls.yawChange = 0
 | |
|             coroutine.yield()
 | |
|         end
 | |
|         direction = (self.position - pos) / types.Actor.walkSpeed(self)
 | |
|         testing.expectEqualWithDelta(direction.x, -0.707, 0.1, 'Walk diagonally, X coord')
 | |
|         testing.expectEqualWithDelta(direction.y, 0.707, 0.1, 'Walk diagonally, Y coord')
 | |
|     end)
 | |
| 
 | |
| return {
 | |
|     engineHandlers = {
 | |
|         onUpdate = testing.updateLocal,
 | |
|     },
 | |
|     eventHandlers = testing.eventHandlers
 | |
| }
 | |
| 
 |