added tween extension to visualize clicks
This commit is contained in:
parent
cd480daccc
commit
6f8bd55fc3
3 changed files with 36 additions and 22 deletions
|
|
@ -1,33 +1,47 @@
|
|||
local api = ...
|
||||
local tween = require "ext/tween/tween" -- https://github.com/kikito/tween.lua
|
||||
|
||||
return {
|
||||
enabled = false,
|
||||
enabled = (lovr ~= nil),
|
||||
|
||||
init = function()
|
||||
local tweenUpdater = api.ecs.processingSystem({
|
||||
updatethread = true,
|
||||
filter = api.ecs.requireAll('tween'),
|
||||
filter = function(obj) return true end, --obj.tween ~= nil end,
|
||||
nocache = true,
|
||||
process = function( self, obj, dt)
|
||||
print("JAAA")
|
||||
foreach( obj.tween, function(k,t)
|
||||
print("TWEENING!")
|
||||
if t:update(dt) == true then
|
||||
obj.tween[k] = nil -- delete tween
|
||||
if count(obj.tween) == 0 then
|
||||
obj.tween = nil
|
||||
print("deleted tweens")
|
||||
if obj.tween ~= nil then
|
||||
if obj.tween:update(dt) ~= true then
|
||||
if obj.tween.target.scale ~= nil then
|
||||
obj.model:setNodeScale(
|
||||
obj.tween.subject.name,
|
||||
obj.tween.subject.scale[1],
|
||||
obj.tween.subject.scale[2],
|
||||
obj.tween.subject.scale[3]
|
||||
)
|
||||
end
|
||||
else
|
||||
api.ecs.remove( api.world, obj )
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
})
|
||||
api.ecs.addSystem( api.world, tweenUpdater )
|
||||
end
|
||||
end,
|
||||
|
||||
---- visualize click
|
||||
--onClick
|
||||
--obj.scale = 0.66
|
||||
--obj.tween = obj.tween or {}
|
||||
--obj.tween['scale'] = tween.new(0.5, obj, {scale = 1})
|
||||
onClick = function(obj,collider)
|
||||
-- visualize click
|
||||
if obj.model ~= nil and obj.node ~= nil and obj.node.scale ~= nil then
|
||||
local x = obj.node.scale[1]
|
||||
local y = obj.node.scale[2]
|
||||
local z = obj.node.scale[3]
|
||||
obj.node.scale[1] = x * 0.88
|
||||
obj.node.scale[2] = y * 0.88
|
||||
obj.node.scale[3] = z * 0.88
|
||||
api.ecs.add( api.world, {
|
||||
model = obj.model,
|
||||
tween = tween.new(0.13, obj.node, {scale = {x, y, z} })
|
||||
})
|
||||
end
|
||||
end
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ xrf.makeClickable = function( physicsWorld, cb)
|
|||
scale[3] * (d + 0.01) -- planes e.g.
|
||||
)
|
||||
print("making node " .. node['name'] .. " clickable: " .. node.extras.href )
|
||||
collider:setUserData( {name = node['name'], node = node, onclick = cb })
|
||||
collider:setUserData( {name = node['name'], node = node, model = model, mesh = mesh, onclick = cb })
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
local api = ...
|
||||
local url = require('url')
|
||||
local tween = require('tween')
|
||||
local ecs = api.ecs
|
||||
local xrf = require("ext/xrfragments/lovr-xrf")
|
||||
xrf.level2 = api.util.addModuleHooks( require("ext/xrfragments/level2") )
|
||||
|
|
@ -18,10 +17,11 @@ xrfimpl = {
|
|||
function(obj, collider)
|
||||
local href = obj.node.extras.href
|
||||
trace("\n[xrf] href was clicked: " .. href)
|
||||
api.ext.exec("onClick", obj, collider)
|
||||
|
||||
local ok = xrf.level2.load( href, obj, api.ext.URI.current, xrfimpl.onLoad)
|
||||
or
|
||||
xrf.level4.import( href, obj, api.ext.URI.current, xrfimpl.onImport)
|
||||
--local ok = xrf.level2.load( href, obj, api.ext.URI.current, xrfimpl.onLoad)
|
||||
-- or
|
||||
-- xrf.level4.import( href, obj, api.ext.URI.current, xrfimpl.onImport)
|
||||
|
||||
end
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue