-- LUA Script - precede every function and global member with lowercase name of script + '_main' local dynEnts = {} function bookcase_items_init_name( e, name ) dynEnts[ e ] = { entD = e, entB = nil, name = name, used = false, showing = false, list = nil } end -- creates list entry by calculating offsets between entities local function build_list( be, de ) local bx, by, bz = GetEntityPosAng( be ) local dx, dy, dz = GetEntityPosAng( de ) return { xo = dx - bx, yo = dy - by, zo = dz - bz } end function BC_Register( entity, name ) for k, v in pairs( dynEnts ) do if v.name == name and not v.used then dynEnts[ k ].used = true dynEnts[ k ].entB = entity dynEnts[ k ].list = build_list( entity, k ) end end end local function repositionDE( de, nx, ny, nz ) local dl = de.list ResetPosition( de.entD, nx + dl.xo, ny + dl.yo, nz + dl.zo ) end function BC_Update( entity, x, y, z ) for k, v in pairs( dynEnts ) do if v.used and v.entB == entity then repositionDE( v, x, y, z ) end end end function bookcase_items_main( e ) end