if SERVER then return end if engine.ActiveGamemode() ~= "sandbox" then return end print('Hello from the gcompute plugin!') local self, info = GCompute.IDE.ViewTypes:CreateType ("NavView") info:SetAutoCreate (true) info:SetDefaultLocation ("Bottom/Right") self.Title = "Nav View" self.Icon = "icon16/heart.png" self.Hideable = true local function find_selected_code() local i = GCompute.IDE:GetInstance() local selectedpanel for k,v in pairs(i.ViewManager.ViewsById) do if v.CodeEditor ~= nil and v.Container:IsVisible() then selectedpanel = v break end end print("Found selected panel!") end --Returns an array of nav nodes local function find_nav_nodes() end --Returns the name of the npc, "???" if undetermined local function find_name() local sp = find_selected_code() print("Found sp:",sp) end --Create the thing that shows possible nav nodes function self:ctor (container) local editor = vgui.Create("DPanel",editorframe) editor:Dock(FILL) --Edit name local namelabel = vgui.Create("DLabel",editor) namelabel:SetText("Townie Name:") namelabel:Dock(TOP) namelabel:SetDark(true) local nameentry = vgui.Create("DTextEntry",editor) nameentry:Dock(TOP) nameentry:SetText(data.Name) nameentry:SetUpdateOnType(true) nameentry.OnValueChange = function(self,value) data.Name = value end --Edit model local modellabel = vgui.Create("DLabel",editor) modellabel:SetText("Townie Model:") modellabel:Dock(TOP) modellabel:SetDark(true) local modelentry = vgui.Create("DTextEntry",editor) modelentry:Dock(TOP) modelentry:SetText(data.Model) modelentry:SetUpdateOnType(true) modelentry.OnValueChange = function(self,value) data.Model = value end --Edit navnodes local navnodelist = vgui.Create("DListLayout",editor) navnodelist:Dock(FILL) local allnavents = ents.FindByClass("info_townienode") local function create_navnode_panel(v) local navnodeitm = vgui.Create("DPanel") local navname = vgui.Create("DComboBox",navnodeitm) for i,j in pairs(navnode_info) do navname:AddChoice(j.Name) end navname:SetValue(v) navname:Dock(LEFT) navname.OnSelect = function(self,index,value) data.NavNodes[index] = value end local navdelete = vgui.Create("DButton",navnodeitm) navdelete:SetText("-") navdelete.DoClick = function() print('Tryint to get rid of nav node', v) --delete it from the data for i,j in pairs(data.NavNodes) do if j == v then for k = i, #data.NavNodes do data.NavNodes[i] = data.NavNodes[i+1] end break end end --and remove the panel navnodeitm:Remove() end navdelete:Dock(RIGHT) return navnodeitm end for k,v in pairs(data.NavNodes) do local navnodeitm = create_navnode_panel(v) navnodelist:Add(navnodeitm) end local addbutton = vgui.Create("DButton",editor) addbutton:SetText("+") addbutton.DoClick = function() local navnodeitm = create_navnode_panel("select") navnodelist:Add(navnodeitm) end addbutton:Dock(BOTTOM) end function self:dtor () if self.HTMLPanel and self.HTMLPanel:IsValid () then self.HTMLPanel:Remove () end self.HTMLPanel = nil end -- Persistance function self:LoadSession (inBuffer) end function self:SaveSession (outBuffer) end