Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local NodeLookup = {}
- local function insert(t,i,v)
- for n = #t,i,-1 do
- local v = t[n]
- v.Index = n+1
- t[n+1] = v
- end
- v.Index = i
- t[i] = v
- end
- local function remove(t,i)
- local v = t[i]
- for n = i+1,#t do
- local v = t[n]
- v.Index = n-1
- t[n-1] = v
- end
- t[#t] = nil
- v.Index = 0
- return v
- end
- local function depth(o)
- local d = -1
- while o do
- o = o.Parent
- d = d + 1
- end
- return d
- end
- local function check(object)
- return object.AncestryChanged
- end
- local function addObject(object,noupdate)
- if script then
- local s = pcall(check,object)
- if not s then
- return
- end
- end
- local parentNode = NodeLookup[object.Parent]
- if not parentNode then
- return
- end
- local objectNode = {
- Object = object;
- Parent = parentNode;
- Index = 0;
- Expanded = false;
- Selected = false;
- Depth = depth(object)}
- NodeLookup[object] = objectNode
- insert(parentNode,#parentNode+1,objectNode)
- end
- NodeLookup[workspace.Parent]={
- Object=workspace.Parent,
- Parent=nil,
- Index=0,
- Expanded=true}
- local r
- function r(o)
- local s,children = pcall(o.GetChildren,o)
- if s then
- for i = 1,#children do
- addObject(children[i],true)
- r(children[i])
- end
- end
- end
- r(game)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement