TOOLSCONSOLE COMMANDS
Console commands
Crushform registers its commands and variables with the engine’s console. You type them in the console, opened with the tilde key, or in the Output Log’s command line. This page groups them by what they do. For the same list with the source text of each description, see the console reference.
Which build has them: the cheat commands work in every build except Shipping, and in the editor. Most of the commands are absent from Shipping altogether: Crushform.Debug, Crushform.ShowZones, Crushform.ShowCollision, Crushform.Stats, Crushform.RepairAll, Crushform.WashAll, Crushform.DebugImpact, Crushform.Tire.Debug and the debug mode. Crushform.Collision.Deform, Crushform.Collision.DeferFrames, crushform.Impact.LogHits, Crushform.Impact.MaxSoundsPerFrame, Crushform.Impact.SoundQueueSeconds, Crushform.Glass.ShardScale, Crushform.Glass.MaxLiveShards, Crushform.Glass.ShardSystemsPerFrame and the tyre variables other than Crushform.Tire.Debug are in every build. The editor commands exist only in the editor.
Visualisation
Section titled “Visualisation”Crushform.Debug 0|1|2(default 0, a cheat): draws the lattice nodes that move a body’s meshes, and the beams between them. 0 is off, 1 the damaged nodes, 2 all of them. Recent hits show as blue spheres with a normal arrow. Turn it off and on again to rebuild the cached node masks.Crushform.ShowZones 0|1(default 0, a cheat): draws the stiffness zones of every damageable body as boxes. Blue is soft, green ordinary and red stiff. Each box is labelled with its stiffness multiplier and its depth cap.Crushform.ShowCollision 0|1(default 0, a cheat): draws the collision every damageable body has now, as wireframes: magenta the shapes of its root’s bodies, the blocks that follow the dents included, white those of its loose hinged parts. The engine’s show collision draws the shapes as authored, which a dent never changes.crushform.Impact.LogHits 0|1(default 0): logs every hit that an impact feedback component judges, and draws each hit point for a few seconds. A green marker means the sound played, yellow a steady contact and red a hit below the minimum.Crushform.Tire.Debug 0|1|2(default 0): the tyre budget overlay. 1 shows the on-screen counts, and 2 also shows every deformer’s rays and each tyre’s detail tier.
Damage and repair
Section titled “Damage and repair”Crushform.RepairAll(a cheat): straightens every damageable actor that this machine holds the damage of. Run it on the server to repair them for every player. On a client it repairs only bodies that exist on that client alone; every replicated body, your own car included, is the server’s, and the log says so.Crushform.WashAll(a cheat): washes the dirt off every damageable actor that this machine holds the damage of; the dents stay. Run it on the server to wash them for every player. On a client it washes only bodies that exist on that client alone, and the log says so.Crushform.DebugImpact [DeltaV] [Name](a cheat): hits a damageable actor up to 100 m away. Without a name, it hits the body under the crosshair, found from the player’s view; the trace skips the pawn you control, so the car you are driving is never hit. With a name, it hits the actor whose name or label contains it, aimed at that actor’s body nearest its middle, and says so when another body stands in the way. The first argument is the speed change in m/s, 10 by default; a first argument that is not a number is taken as the name. Use it to check a dent without driving into anything: stand within 100 m of a parked car, then runCrushform.DebugImpact 18 BP_VehicleAdvSedan2.
Debug mode
Section titled “Debug mode”Crushform.DebugMode(a cheat): toggles the debug mode, a free camera and a panel of tools. It is registered by theCrushformDebugmodule, which is not in Shipping builds. See Debug mode.Crushform.DebugMode.AllowClients 0|1(default 1): whether the server runs the debug tools for remote clients (1) or only for its own local player (0).
Statistics
Section titled “Statistics”Crushform.Stats(not a cheat): prints the atlas slots in use, and the counters of every damageable actor in the world. It exists in every build except Shipping. From the editor, during Play In Editor, it prints every playing world: the server’s and each client’s, told apart by role.
Run stat with the names of the plugin’s stat groups to see the frame cost of each module: stat Crushform, stat CrushformTire, stat CrushformBreakable, stat CFBreakableInstances, stat CrushformDebris, stat CFPropContact, stat CFImpactFeedback, stat CrushformVehicle, stat CrushformChaos, stat CrushformWheel, stat CrushformEngine, stat CrushformPlayground and stat CrushformDebug. The camera module declares none.
Collision
Section titled “Collision”The collision of a dented body. The variables are in every build. The project settings UCFSettings::bDeformCollision and UCFSettings::CollisionDeferFrames are written to them at startup and in the editor; see Project settings.
Crushform.Collision.Deform(1): whether collision follows dents in this project. 0: every vehicle keeps its authored collision. Read when a vehicle’s play begins. A console command, a command-line argument or a device profile overrides the project setting.Crushform.Collision.DeferFrames(1): frames a heavy collision build may run off the game thread before it must be on the body, 0 or 1. 0 builds everything in the frame of the hit. A negative value counts as 0 and a value above 1 as 1. A console command, a command-line argument or a device profile overrides the project setting.
Impact feedback
Section titled “Impact feedback”The sound cap of the impact feedback. Both variables are in every build. Each one is written from the project setting at startup and in the editor; see Project settings.
Crushform.Impact.MaxSoundsPerFrame(2): the most sounds that start in one frame. The rest wait, strongest first, for later frames. 0 turns the cap off. A console command, a command-line argument or a device profile overrides the project setting.Crushform.Impact.SoundQueueSeconds(0.15): how long a sound over the frame’s cap may wait; past it, it is dropped.
The shards of a broken glass pane. All three variables are in every build.
Crushform.Glass.ShardScale(1): the share of a broken pane’s shards that are thrown, from 0 to 1. 0 throws none; values outside the range are clamped.Crushform.Glass.MaxLiveShards(512): the most shards of broken panes that are alive at once. 0 turns the cap off.Crushform.Glass.ShardSystemsPerFrame(1): the shard systems of broken panes started in one frame. The rest start on the next frames, in order. 0 turns the limit off.
The tyre budget. All of these are in every build. Each one overrides the matching project setting in Project Settings > Plugins > Crushform Tire, whether a console command or a command-line argument sets it. The defaults are the values those settings start with.
Crushform.Tire.Enable(1): 0 makes every tyre relax back to round.Crushform.Tire.MaxWheels(30): the tyres that may deform at once. The viewer’s own vehicle always deforms.Crushform.Tire.Radius(4000 cm): the distance from the camera within which other vehicles’ tyres may deform.Crushform.Tire.LodDistance1(1500 cm) andCrushform.Tire.LodDistance2(3000 cm): the distances of the two detail tiers.Crushform.Tire.Hysteresis(0.15): how far a granted tyre’s boundaries widen. Read within 0 to 0.9.Crushform.Tire.UpdateInterval(0.25 s): the time between two budget passes.Crushform.Tire.OnScreenTolerance(0.5 s): how long after it was last drawn a wheel still ranks as on screen.
The budget’s mode is a project setting, UCFTireSettings::Scope; see Project settings.
Editor only
Section titled “Editor only”These exist in the editor, not in a game build. They rebuild the material functions and the dirt order of your project after you change the matching settings. Each one leaves the materials it changes unsaved, so save them afterwards.
Crushform.RewireLooks: applies the look settings, Body Dirt Look, Wheel Dirt Look and Glass Crack Look, to every saved material that calls a Crushform dirt or glass function.Crushform.RebakeDirtOrder: rebakes the dirt order into the dirt functions, after a change to the dirt channels or to Dirt Layer Order.Crushform.RebakeOffsets: rebakes the Custom Data Offsets into the functions that use them, after a change to one of the four offsets.
Check that it works
Section titled “Check that it works”In Play In Editor, in the proving ground level, stand within 100 m of a parked sedan and run Crushform.DebugImpact 10 BP_VehicleAdvSedan2. The Output Log prints a line of this form, and the body is named in it:
Crushform.DebugImpact: hit <body> at 10.0 m/s; it is now damaged.Then run Crushform.Stats. The body’s line lists the hits applied to it, so it now shows at least one.
When the command cannot hit, the Output Log prints one of these lines instead, with the names filled in:
Crushform.DebugImpact: no local player to aim with.Crushform.DebugImpact: the speed change must be a positive number of m/s.Crushform.DebugImpact: no damageable actor whose name contains '<name>'.Crushform.DebugImpact: nothing in view within 100 m.Crushform.DebugImpact: <body> stands between you and <target>.Crushform.DebugImpact: <body> takes no Crushform damage.Crushform.DebugImpact: <body> is not hit from this machine; run it on the server or on the machine that drives it.Troubleshooting
Section titled “Troubleshooting”A command is unknown. Cause: the command comes from a module that the build does not load. The debug commands are absent from Shipping builds, and the editor commands from game builds. Fix: check the build, as listed at the top of this page.
Crushform.DebugImpact says nothing in view within 100 m, or that the body takes no Crushform damage.
Cause: the crosshair finds no body within 100 m, or the body it finds has no Crushform deform component. The car you are driving is never found, because the trace skips your own pawn.
Fix: aim at a parked body with a Crushform deform component, or pass the body’s name as the second argument.
Crushform.DebugImpact says stands between you and.
Cause: a named body is behind another body from where you stand.
Fix: move to a spot with a clear view of the named body, and run the command again.
Crushform.DebugImpact says the hit is not made from this machine.
Cause: this machine does not hold the body’s damage. A client draws the server’s damage.
Fix: run the command on the server, or on the machine that drives the body.