Skip to content

Overhaul#20

Open
LengthenedGradient wants to merge 5 commits into
mainfrom
overhaul
Open

Overhaul#20
LengthenedGradient wants to merge 5 commits into
mainfrom
overhaul

Conversation

@LengthenedGradient

Copy link
Copy Markdown
Member

Large CFW rework:

  • Parenting and constraining are now mutually exclusive
  • Contraptions now hold a table of families they contain
  • Subfamily system added
  • Mass and positional tracking reworked and now tracks center of mass, OBB, AABB, etc.
  • CFW.addTransformProxy replaces the previous parent detour system used for stuff like acf_turret entities
  • Removed E2 library support

Stooberton and others added 5 commits June 5, 2026 19:43
Added the stuff for families
Updated hook names
Sorry, I got carried away and didn't make incremental commits.

A lot of bugfixes, especially surrounding blockers. They add a surprising amount of caveats.
Bigly overhauled families, they are now properly a component of contraptions rather than a thing sitting alongside them.
Big optimizations in bulk movements such as merging/splitting.
Physical, parented, center of mass is tracked for families and contraptions
Simplified the internal tracking of entities -- no more entIndex nonsense

New lifecycle hooks for families:
cfw.family.init(family)
cfw.family.removed(family)
cfw.family.added(family, ent)
cfw.family.subbed(family, ent, wasPhysical)
cfw.family.merged(family, oldFamily)
cfw.family.split(oldFamily, newFamily, newAncestor)
cfw.family.ancestorRemoved(family, oldAncestor, newAncestor)
cfw.family.ancestorInserted(family, oldAncestor, newAncestor)
cfw.family.becameRoot(family) / cfw.family.becameSubFamily(family)
cfw.family.massChanged(family, ent, newMass)

Renamed contraption/family.created to init

Added cfw.contraption.massChanged(contraption, ent, newMass)
Added ENT:GetChildren detour for blockers

New function: CFW.addTransformProxy(ownerClass, ownerField, proxyClass, proxyField)

With addTransformProxy, an entity parented to a turret now links to the turret drive in CFW, not the rotator.
The rotator is fully excluded from contraption connectivity — SetParent separates the engine parent (the proxy, for transforms) from the logical parent (what CFW links/GetParent reports).
Anything walking CFW links/families around turrets will see the drive, never the rotator.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants