neural look
This commit is contained in:
@@ -162,6 +162,10 @@ Event.on({ 'milo_cycle', 'milo_queue' }, function(e)
|
|||||||
context.taskTimer = context.taskTimer + taskTimer()
|
context.taskTimer = context.taskTimer + taskTimer()
|
||||||
context.taskCounter = context.taskCounter + 1
|
context.taskCounter = context.taskCounter + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if context.storage:isOnline() and #context.queue > 0 then
|
||||||
|
os.queueEvent('milo_cycle')
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Event.on('turtle_inventory', function()
|
Event.on('turtle_inventory', function()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
local Angle = { }
|
local Angle = { }
|
||||||
|
|
||||||
function Angle.towards(x, y, z)
|
function Angle.towards(x, y, z)
|
||||||
return math.deg(math.atan2(-x, z)), 0
|
return math.deg(math.atan2(-x, z)), math.deg(-math.atan2(y, math.sqrt(x * x + z * z)))
|
||||||
end
|
end
|
||||||
|
|
||||||
function Angle.away(x, y, z)
|
function Angle.away(x, y, z)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ function Interface.getUniqueNames()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Interface.lookAt(pt)
|
function Interface.lookAt(pt)
|
||||||
local yaw, pitch = Angle.towards(pt.x - .5, pt.y + 1, pt.z - .5)
|
local yaw, pitch = Angle.towards(pt.x - .5, pt.y, pt.z - .5)
|
||||||
return Interface.look(yaw, pitch)
|
return Interface.look(yaw, pitch)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
32
neural/neuralLook.lua
Normal file
32
neural/neuralLook.lua
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
local ni = require('neural.interface')
|
||||||
|
local Point = require('point')
|
||||||
|
local Util = require('util')
|
||||||
|
|
||||||
|
local os = _G.os
|
||||||
|
|
||||||
|
local pos = { x = 0, y = 0, z = 0 }
|
||||||
|
local meta = ni.getMetaOwner()
|
||||||
|
|
||||||
|
local function findTargets()
|
||||||
|
local l = ni.sense()
|
||||||
|
|
||||||
|
Util.filterInplace(l, function(a)
|
||||||
|
return math.abs(a.motionY) > 0 and meta.id ~= a.id
|
||||||
|
end)
|
||||||
|
table.sort(l, function(e1, e2)
|
||||||
|
return Point.distance(e1, pos) < Point.distance(e2, pos)
|
||||||
|
end)
|
||||||
|
|
||||||
|
return l[1]
|
||||||
|
end
|
||||||
|
|
||||||
|
while true do
|
||||||
|
local target = findTargets()
|
||||||
|
if target then
|
||||||
|
print('looking at ' .. target.name)
|
||||||
|
ni.lookAt(target)
|
||||||
|
os.sleep(0)
|
||||||
|
else
|
||||||
|
os.sleep(3)
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user