Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions lua/acf_devtools/events/cfw_contraption_funcs.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ local ACF_DevTools = ACF_DevTools
local EventViewer = ACF_DevTools.EventViewer

do
local Created = EventViewer.DefineEvent("CFW.Contraption.Created")
Created.Icon = "icon16/add.png"
local Init = EventViewer.DefineEvent("CFW.Contraption.Init")
Init.Icon = "icon16/add.png"

function Created.BuildNode(Node)
function Init.BuildNode()

end
end
Expand Down Expand Up @@ -70,7 +70,7 @@ do
local Removed = EventViewer.DefineEvent("CFW.Contraption.Removed")
Removed.Icon = "icon16/cancel.png"

function Removed.BuildNode(Node)
function Removed.BuildNode()

end
end
121 changes: 121 additions & 0 deletions lua/acf_devtools/events/cfw_family_funcs.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
local ACF_DevTools = ACF_DevTools
local EventViewer = ACF_DevTools.EventViewer

local function RenderEntities3D(...)
for i = 1, select("#", ...) do
local Entity = select(i, ...)
if not IsValid(Entity) then continue end

local pulse = Lerp((math.sin(CurTime() * 7) + 1) / 2, 0.33, 1)

render.SuppressEngineLighting(true)
render.ModelMaterialOverride(Material("models/debug/debugwhite"))
render.SetColorModulation(pulse, pulse, pulse)

render.DepthRange(0, 0)
Entity:DrawModel()
render.DepthRange(0, 1)

render.SetColorModulation(1, 1, 1)
render.ModelMaterialOverride(nil)
render.SuppressEngineLighting(false)
end
end

do
local Init = EventViewer.DefineEvent("CFW.Family.Init")
Init.Icon = "icon16/group_add.png"

function Init.BuildNode()

end
end

do
local EntityAdded = EventViewer.DefineEvent("CFW.Family.EntityAdded")
EntityAdded.Icon = "icon16/basket_put.png"

function EntityAdded.BuildNode(Node, Entity)
EventViewer.AddKeyValueNode(Node, "Entity", Entity, "icon16/brick.png")
end
EntityAdded.Render3D = RenderEntities3D
end

do
local EntityRemoved = EventViewer.DefineEvent("CFW.Family.EntityRemoved")
EntityRemoved.Icon = "icon16/basket_remove.png"

function EntityRemoved.BuildNode(Node, Entity)
EventViewer.AddKeyValueNode(Node, "Entity", Entity, "icon16/brick.png")
end
EntityRemoved.Render3D = RenderEntities3D
end

do
local Merged = EventViewer.DefineEvent("CFW.Family.Merged")
Merged.Icon = "icon16/arrow_merge.png"

function Merged.BuildNode(Node, Other)
EventViewer.AddKeyValueNode(Node, "Merged Into", Other, "icon16/group.png")
end
end

do
local Split = EventViewer.DefineEvent("CFW.Family.Split")
Split.Icon = "icon16/arrow_divide.png"

function Split.BuildNode(Node, Other, Ancestor)
EventViewer.AddKeyValueNode(Node, "Split Into", Other, "icon16/group.png")
EventViewer.AddKeyValueNode(Node, "New Ancestor", Ancestor, "icon16/brick.png")
end
Split.Render3D = RenderEntities3D
end

do
local AncestorRemoved = EventViewer.DefineEvent("CFW.Family.AncestorRemoved")
AncestorRemoved.Icon = "icon16/arrow_up.png"

function AncestorRemoved.BuildNode(Node, Old, New)
EventViewer.AddKeyValueNode(Node, "Old Ancestor", Old, "icon16/brick.png")
EventViewer.AddKeyValueNode(Node, "New Ancestor", New, "icon16/brick.png")
end
AncestorRemoved.Render3D = RenderEntities3D
end

do
local AncestorInserted = EventViewer.DefineEvent("CFW.Family.AncestorInserted")
AncestorInserted.Icon = "icon16/arrow_down.png"

function AncestorInserted.BuildNode(Node, Old, New)
EventViewer.AddKeyValueNode(Node, "Old Ancestor", Old, "icon16/brick.png")
EventViewer.AddKeyValueNode(Node, "New Ancestor", New, "icon16/brick.png")
end
AncestorInserted.Render3D = RenderEntities3D
end

do
local BecameRoot = EventViewer.DefineEvent("CFW.Family.BecameRoot")
BecameRoot.Icon = "icon16/shield.png"

function BecameRoot.BuildNode()

end
end

do
local BecameSubFamily = EventViewer.DefineEvent("CFW.Family.BecameSubFamily")
BecameSubFamily.Icon = "icon16/shield_go.png"

function BecameSubFamily.BuildNode()

end
end

do
local Removed = EventViewer.DefineEvent("CFW.Family.Removed")
Removed.Icon = "icon16/cancel.png"

function Removed.BuildNode()

end
end
53 changes: 53 additions & 0 deletions lua/cfw/classes/base_sv.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
-- Base class shared by Contraption and Family.
-- Both track entities in an ents table, an entsbyclass map, and a count
-- The extensions also add mass tracking and other features

CFW.Classes.EntityCollection = {}

do
local BASE = CFW.Classes.EntityCollection

BASE.__index = BASE

-- Returns the set of tracked entities of the given class, or an empty table.
function BASE:EntitiesByClass(className)
return self.entsbyclass[className] or {}
end

-- Returns true if at least one entity of the given class is tracked.
function BASE:ContainsClass(className)
local tracked = self.entsbyclass[className]
return tracked and next(tracked) ~= nil or false
end

-- Registers entity in entsbyclass.
function BASE:AddByClass(entity)
local className = entity:GetClass()
self.entsbyclass[className] = self.entsbyclass[className] or {}
self.entsbyclass[className][entity] = true
end

-- Removes entity from entsbyclass.
function BASE:RemoveByClass(entity)
local className = entity:GetClass()
local byClass = self.entsbyclass[className]

if byClass then
byClass[entity] = nil
if not next(byClass) then
self.entsbyclass[className] = nil
end
end
end

-- Bulk-inserts all entities from another collection's entsbyclass into this one.
function BASE:MergeByClass(other)
for className, ents in pairs(other.entsbyclass) do
self.entsbyclass[className] = self.entsbyclass[className] or {}

for ent in pairs(ents) do
self.entsbyclass[className][ent] = true
end
end
end
end
Loading
Loading