Modify Smart Shape | hyperPad Documentation
Logo
DocumentationObjectModify Smart Shape
Object

Modify Smart Shape

Published September 23, 2026
Modify Smart Shape

Pre-release feature — not available in the live app release yet.

Change a Smart Shape that already exists. Resize it, rebuild its hills or road, extend an end, or change its artwork. Find this behaviour under Object → Lifetime.

The control images are real dark-mode screenshots, cropped and arranged for readability. They illustrate the fields; the example target is not a runnable setup for every action. Diagrams illustrate the result.

Choose the target, then one action

  1. Set Shape type to match your target.
  2. Select the shape in Object A, or use Dynamic Object A with the Object ID from Generate Smart Shape.
  3. Choose Action. Only that action's inputs appear.

Actual Shape type, Object A selector, Action, and optional Change graphics toggle.

Shape type selects the form; it does not convert the target. A Box remains a Box. Wait for a generated shape's Ready event before modifying it.

Choose the edit you need

Before-and-after comparison of Resize, Regenerate, and Extend.

Box or Freeform — resize with Width and Height

Choose Action → Resize. These are the only two size inputs:

Actual Width and Height fields for Resize.

Try: change a Box from 16 × 8 m to 20 × 4 m for a wider, shallower area. A Freeform resizes its existing outline; Modify has no Freeform Variation field.

For an artwork change without resizing, choose Graphics only.

Terrain — regenerate hills, extend an end, or change depth

Choose one action:

  • Regenerate hills: Hill height, Hill spacing, and Hill variation.
  • Extend left / Extend right: Extend distance and Extend style. Add hills reveals the three hill inputs; Continue end hides them.
  • Change ground depth: Ground depth only.

Actual Terrain extension, hill, and ground-depth fields, grouped by action.

Terrain crest-to-valley height and spacing, and visible ground depth.

Try: Extend right by 12 m, using Add hills with height 3 m, spacing 12 m, and variation 0%. The existing ground stays while new ground is added at the end.

For generated streaming Terrain, actions depend on whether you target the owner or a live section. A Dynamic target is checked when the behaviour runs; read Status and Error.

Finite Path — rebuild, extend, widen, or open/close a road

Regenerate path replaces the route using a new set of dimensions. Closed loop hides Bend spacing.

Actual Regenerate path Length, Path width, Bend amount, Bend spacing, Closed loop, and Heading fields.

Path width, forward Length, and Heading shown on an open road.

Extend start / Extend end uses just Heading and Extend distance:

Actual Heading and Extend distance controls.

Change path width shows only Path width. Close loop / Open loop has no numeric inputs. These finite geometry actions do not apply to an Endless owner.

Closed tracks need room for turns: Length must exceed twice Bend amount, and turn radius must exceed half Path width plus any positive Wall offset. Tight curves or wide roads can still fail geometry checks.

Endless Path — reshape bends

Choose Reshape endless bends. Target the owner for course-wide changes, or a live Section Object ID for one section.

Actual Bend amount, Bend spacing, and Bend variation inputs.

This reshapes eligible live sections while keeping their joins, lengths, widths, headings, and collision policy. Occupied sections are protected. An owner edit also updates future-section settings. Try a smaller Bend amount or larger Bend spacing for gentler bends.

Change the artwork

Choose Graphics only, or enable Change graphics to update artwork during a geometry edit. Sample path has no artwork controls.

Keep existing, Replace, and Clear compared on a shape.

Box / Terrain artwork controls

Actual Top, Middle, Left, Right, Bottom operation selectors and Side and bottom graphics switch.

Each slot is independent. Replace reveals its image selector; choose a supported static PNG. Clearing the only visible artwork can leave an invisible physical shape. The resulting shape must still pass validation.

Freeform / Path artwork controls and replacement picker

Actual Freeform Perimeter and Fill operations, and Path Road operation, with Replace image selectors visible.

Freeform uses Perimeter / Fill. Path uses Road. Keep any slot you do not want to change. Artwork changes do not change size, collision mode, tile size, friction, or bounce.

Read a point on an Endless road

Sample path — read a position and direction without changing the road

Use Path → Sample path on an Endless Path owner or supported live section.

World position projected onto a road centreline, plus normalized section-position sampling.

Choose one Sample position method:

Actual Sample position selectors, World X, World Y, and Section position inputs.

Nearest world position: enter World X and World Y in scene metres to find the nearest point on the retained road centreline.

Position along section: use 0 (start) to 1 (end). 0.5 is halfway through the section's forward span, not its curved travel distance. This mode requires a live Section Object ID; an owner Object ID is not enough.

On success, Status is sampled. Use Sample X, Sample Y, and Sample Heading in later behaviours. Sampling does not move a player or vehicle; apply those outputs through movement or positioning behaviours yourself.

Check the result

The completion connection can run after success or failure. Check Status:

  • applied — the edit succeeded.
  • sampled — Sample path succeeded.
  • failed — read Error and correct the inputs or target.

Generate Ready and Object ID flow into Modify, followed by a success/failure check.

Whole-shape IDs, section IDs, and target groups

Owner and temporary section references compared.

Use Object ID for the owner. Pass Section Object ID unchanged for a supported live-section edit; it expires when retired or reset. Target Reference preserves the scope you addressed, while Modify's Object ID output returns the owner.

Use Apply Behaviour To for groups of matching shapes, up to 256 references. Targets are applied separately; a failure does not undo earlier successes. Sample path requires exactly one target. Dynamic targets can expose options before the runtime knows the object. If an action fails, check shape type, finite/Endless mode, target scope, and Error.

The expandable reference below contains exact input, output, and compatibility rules without putting every possible field in the walkthrough.

Field reference: open only what you need

The detailed definitions below are grouped by shape and purpose. Each group covers several possible selections; these are not all visible inputs at once.

Changes an existing Smart Shape while the project is running, or reads a position on an Endless Path. Choose the shape type that matches Object A, then choose an action. Connected behaviours run when the request finishes; check Status and Error before using its outputs.

Shared setup — shape and target

Choose the matching type, target, and action first. The action determines which of the following input groups is relevant.

Shape type

Choose Terrain for hilly ground, Box for a directional filled shape, Freeform for a filled outline with one perimeter graphic, or Path for a road. This chooses the available controls; it does not convert Object A into another type.

Object A

Select an enabled Smart Shape that is available in the current scene. Its type must match Shape type. Wait until a newly generated object or section is ready before requesting an edit.

Dynamic Object A

Enable Dynamic on Object A to use an Object ID from another behaviour. For Terrain or Path, a current Section Object ID can target one generated section instead of its owner. For example, connect a Section Generated event to this behaviour and use that event's Section Object ID. A retired or expired section fails; it never falls back to editing the whole owner.

Groups

Use Apply Behaviour To to select groups of matching Smart Shapes. A request supports up to 256 references; Sample path requires exactly one target. Each target is checked and applied separately, so a failed group request does not undo changes that already succeeded on other targets.

Action

Choose what to change. Terrain offers hill regeneration, extension, ground depth, or graphics. Box and Freeform offer Resize or Graphics only. Path offers road regeneration, extension, width, loop controls, graphics, sampling, and endless-bend reshaping. Only the inputs used by the selected action are read.

Units

Shape dimensions and extension distances are entered in metres in the object's own coordinate space; its scale and rotation still affect the result in the scene. World X, World Y, Sample X, and Sample Y use scene-world metres instead. Angles use degrees. Enter finite numbers and use 0–100 for percentage controls.

Box — Resize

Resize uses Width and Height. Graphics only is covered in the artwork group.

Resize

For Box or Freeform, scale the existing outline to the requested Width and Height independently. The existing points and curve handles are scaled instead of generating a new outline. Different horizontal and vertical proportions can stretch the shape. Graphics are kept unless Change graphics is enabled.

Width

The new positive width in metres for a Box or Freeform outline. Used only by Resize. This is a shape dimension, not the width of its graphic tiles.

Height

The new positive height in metres for a Box or Freeform outline. Used only by Resize. It is independent of Width and is not the Terrain Hill height setting.

Terrain — hills, extension, and depth

Regenerate hills uses hill inputs. Extension uses distance and style, adding hill inputs only for Add hills. Change ground depth uses Ground depth. Endless targets support fewer actions.

Regenerate hills

Replace the hills inside the existing Terrain span using Hill height, Hill spacing, and Hill variation. Existing endpoint positions and slopes are retained so adjoining ground stays connected. The span is not extended. A new internal random choice is used each time; variation can make the result different.

Extend left

Add ground beyond the left end of finite Terrain, using Extend distance and Extend style. The existing surface is retained. Left means the object's local left direction, which follows the object's rotation.

Extend right

Add ground beyond the right end of finite Terrain, using Extend distance and Extend style. The existing surface is retained. Right means the object's local right direction, which follows the object's rotation.

Extend distance

A positive distance in metres to add. For Terrain, this is the horizontal distance beyond the selected end. For an open finite Path, it is the distance from the current endpoint to the new endpoint in the chosen extension direction, not the length measured along the resulting curve.

Extend style

Choose Add hills to generate a new hilly Terrain section using the hill controls, or Continue end to add straight ground. This control applies only to finite Terrain extension.

Add hills

Generate hills only in the newly added Terrain span. Hill height, Hill spacing, and Hill variation control that new ground, while its join to the existing surface is preserved.

Continue end

Add a straight horizontal Terrain section at the existing endpoint's height. It does not continue a sloping endpoint uphill or downhill. Hill height, Hill spacing, and Hill variation are not used.

Hill height

The approximate crest-to-valley height in metres, not a height added on both sides of the ground. Larger values make taller hills; 0 removes the added hill height. Existing endpoint heights and slopes are still preserved, so 0 does not necessarily flatten the whole span.

Hill spacing

The approximate horizontal distance in metres between neighbouring crests and valleys. Larger values create broader hills; smaller values create more frequent hills. The spacing is fitted to the available span. If there are too many points or the hills are too sharp, increase spacing or reduce Hill height.

Hill variation

How much hill heights and spacing vary, from 0% to 100%. Use 0% for a regular pattern or increase it for less uniform ground. This does not change the retained endpoints or the requested overall span.

Change ground depth

Change the depth beneath a finite Terrain surface without regenerating its hills. This action uses Ground depth and does not move the surface points. Endless Terrain does not support this action.

Ground depth

The distance in metres from the lowest surface point down to the Terrain's base. Use a nonnegative value. A value of 0 removes the depth beneath the surface; it does not delete the Smart Shape. Existing graphics and collision settings still determine how it is drawn and used by physics.

Endless Terrain

The generator extends ground automatically. Modify Smart Shape supports Regenerate hills and Graphics only on a live owner or section, but cannot manually extend its ends or change its shared ground depth. A section edit keeps its length and shared joins. Geometry changes that would disturb a touching or occupying physical object can be rejected.

Freeform — Resize

Resize scales the existing outline using Width and Height. It has no Variation input. Graphics only uses Perimeter and Fill.

Resize

For Box or Freeform, scale the existing outline to the requested Width and Height independently. The existing points and curve handles are scaled instead of generating a new outline. Different horizontal and vertical proportions can stretch the shape. Graphics are kept unless Change graphics is enabled.

Width

The new positive width in metres for a Box or Freeform outline. Used only by Resize. This is a shape dimension, not the width of its graphic tiles.

Height

The new positive height in metres for a Box or Freeform outline. Used only by Resize. It is independent of Width and is not the Terrain Hill height setting.

Path — finite edits, Endless bends, and sampling

Read the entry for your chosen action. Sampling swaps geometry inputs for either World X/Y or Section position. Finite and Endless actions have different target requirements.

Regenerate path

Replace a finite Path's centreline using Length, Path width, Bend amount, Closed loop, and Heading; an open road also uses Bend spacing. The replacement starts at the old first point and keeps the existing collision policy. This action does not work on an Endless Path; use Reshape endless bends there.

Length

The positive forward span in metres for a regenerated finite Path, not the total distance travelled around its bends or loop. An open Path advances by this amount along Heading. For a closed loop, this is the loop's overall forward span.

Path width

The positive full road width in metres, measured across its centreline. Used by Regenerate path and Change path width. This controls the road shape rather than the source image size. Endless Path sections retain the width chosen when generated.

Bend amount

For an open finite Path, the sideways excursion in metres away from its starting direction; 0 makes it straight. For a regenerated Closed loop, this is the turn radius. For Reshape endless bends, it controls the requested sideways bend size; bends may be reduced to keep the road and its walls valid.

Bend spacing

The positive forward distance in metres between alternating bends. Larger values give longer, gentler bends. Finite Paths fit the pattern into Length; endless sections fit it between their fixed joins. This input is unused for regenerated closed loops. If a finite Path exceeds its point limit, increase spacing or shorten Length.

Closed loop

When regenerating a finite Path, turn this on to create a capsule-shaped closed road, or off for an open road. A closed loop requires Length greater than twice Bend amount, and Bend amount greater than half Path width. Bend spacing is unused while this is on. Use the separate Close loop action to connect an existing road without regenerating it.

Heading

For Regenerate path, this is an absolute direction in the object's own coordinates: 0° points right and 90° points up. For Extend start or Extend end, it is a turn relative to that endpoint's outward direction: 0° continues straight, positive values turn counterclockwise, and negative values turn clockwise. The object's rotation still applies.

Extend start

Add a segment before the first point of an open finite Path. Extend distance sets how far to place the new endpoint, and Heading turns relative to the start's outward direction. Open a closed loop before extending it. Endless Paths extend automatically instead.

Extend end

Add a segment after the last point of an open finite Path. Extend distance sets how far to place the new endpoint, and Heading turns relative to the end's outward direction. Open a closed loop before extending it. Endless Paths extend automatically instead.

Extend distance

A positive distance in metres to add. For Terrain, this is the horizontal distance beyond the selected end. For an open finite Path, it is the distance from the current endpoint to the new endpoint in the chosen extension direction, not the length measured along the resulting curve.

Change path width

Change the full width of a finite road while keeping its centreline. Only Path width is used for the shape change. A width that makes the road overlap or creates invalid walls can be rejected. Endless Paths do not support this action.

Close loop

Connect the ends of an existing finite Path while retaining the existing road. A return connection may be added when needed. If a safe connection cannot fit without crossing or squeezing the road, the request fails. Length, Bend amount, Closed loop, and Heading are not used by this action.

Open loop

Cut a small gap in a closed finite Path to create an open road while retaining the rest of the route. The operation can require extra points and may fail if the shape is already at its point limit. The target must already be closed; Endless Paths are always open.

Reshape endless bends

Change Bend amount, Bend spacing, and Bend variation on a live Endless Path while keeping its section lengths, widths, headings, collision policy, and shared joins. Dynamic Object A with a Section Object ID changes only that section; an owner request also updates settings for future sections. Occupied sections are protected. Once an earlier join has retired, reshaping the first retained section can fail; choose a later live section. Finite Paths use Regenerate path instead.

Bend variation

For Reshape endless bends, enter 0–100% to control irregularity in bend spacing, size, and direction. Use 0% for a regular pattern. The run's existing random seed is retained, so repeating the same settings on the same section does not request a new random road.

Sample path

Read a position and forward heading on one live Endless Path without changing its shape or graphics. Finite Paths are not supported. Use Sample X, Sample Y, and Sample Heading to place an object or guide it back to the road. Sampling searches only sections that are currently retained, not retired or future road.

Sample position

Choose Nearest world position to find a road point near World X and World Y, or Position along section to sample a specific section using Section position. These modes are available only for Sample path.

Nearest world position

Find a nearby point on the retained Endless Path centreline using World X and World Y. Use the owner's Object ID to search the full retained road. With a Section Object ID, the request fails if the nearest result belongs to another section.

Position along section

Read a point within one current Endless Path section. Set Dynamic Object A to its Section Object ID and enter Section position. An owner Object ID is not enough for this mode.

World X

The scene-world horizontal coordinate in metres used by Nearest world position. Positive X points right. This is not a screen pixel coordinate or a distance from Object A; it can come from another object's position output.

World Y

The scene-world vertical coordinate in metres used by Nearest world position. Positive Y points up. Together with World X, it identifies the position to search near, not a new position to move the road to.

Section position

A number from 0 to 1: 0 is the section start, 0.5 is halfway through its forward span, and 1 is its end. This follows progress along the section's main direction, not a percentage of the curved road's total length. It requires a live Section Object ID.

Artwork — Change graphics and Graphics only

These operations appear for Graphics only or when Change graphics is enabled. Only slots for the selected shape appear; only Replace reveals an image picker. Sample path hides all graphics controls.

Graphics only

Change the selected graphic slots without changing the outline, hills, road width, or collision policy. Available for all four shape types. Choose Keep existing, Replace, or Clear separately for each supported slot.

Change graphics

Turn on to include graphic-slot changes with a shape action. For each target, the shape and requested artwork are validated and applied together. Turn off to keep all graphics. Graphics only always shows the slot controls, while Sample path never changes graphics.

Keep existing

Leave this slot's currently assigned graphic unchanged. Any graphic stored in its Replace picker is ignored. Choose this for slots you do not want to edit.

Replace

Assign the static PNG selected in the graphic picker to this slot. The picker can use a Dynamic graphic input, but it must resolve to a supported static PNG; animation frames and cycles are not supported. An empty or invalid selection fails instead of silently clearing the slot.

Clear

Remove the image assignment from this slot. This does not delete the Smart Shape, remove its outline, or turn off its collision policy. The resulting configuration must still pass validation.

Side and bottom graphics

Show the Left, Right, and Bottom slot controls for Terrain or Box. This is a disclosure control, not a switch that enables or disables those graphics. Hiding it does not reset previously chosen slot operations; use Keep existing when a slot should remain unchanged.

Top

For Terrain and Box, the graphic used on top-facing edges. Choose Keep existing, Replace, or Clear independently of Middle and the other edge slots.

Middle

For Terrain and Box, the graphic used to fill the interior. It is separate from the surface and edge graphics. Replacing this slot changes the fill artwork without setting a new ground depth or outline size.

Left

For Terrain and Box, the graphic used on left-facing edges. Reveal it with Side and bottom graphics.

Right

For Terrain and Box, the graphic used on right-facing edges. Reveal it with Side and bottom graphics.

Bottom

For Terrain and Box, the graphic used on bottom-facing edges. Reveal it with Side and bottom graphics.

Perimeter

For Freeform, the graphic repeated around the outer outline. This one perimeter slot replaces the directional edge choices used by Terrain and Box.

Fill

For Freeform, the graphic used inside the outline. It can be kept, replaced, or cleared independently of Perimeter.

Road

For Path, the graphic drawn along the road. Path has this one graphic slot; it does not expose separate fill, side, or bottom slots.

Outputs, completion, and safety

These are returned values and execution rules, not additional input fields. Section Index and Sample X/Y/Heading are exposed for Sample path.

Target Reference

Output containing the exact owner or section reference that was targeted. Pass this to Dynamic Object A when the next operation must keep the same scope. A group request can return an array of references.

Object ID

Output identifying the Smart Shape owner, even when Object A targeted one section. Use Target Reference or Section Object ID to keep a later edit section-scoped. A group request can return an array of owner IDs.

Terrain Object ID

Compatibility output containing the same owner ID as Object ID, including for Box, Freeform, and Path. It does not identify a separate Terrain object or an individual section.

Section Object ID

Output containing the sampled Endless Path section, or the section targeted by a successful single-section edit. It is empty for an ordinary owner-wide edit or a multi-target edit. Section IDs are temporary: they stop working when their section retires, the object is reset or deleted, or the scene/run changes.

Section Index

For a successful Sample path request, the generated section's index within its Endless Path run, starting at 0. It is a number for identifying sequence, not an Object ID or a position in metres.

Sample X

For a successful Sample path request, the sampled centreline point's scene-world X coordinate in metres. Use together with Sample Y. It is not relative to the camera or the Smart Shape.

Sample Y

For a successful Sample path request, the sampled centreline point's scene-world Y coordinate in metres. Use together with Sample X to position another object on the road.

Sample Heading

For a successful Sample path request, the forward tangent direction at the sampled point in world degrees: 0° is right and 90° is up. Negative angles are valid. This is a direction along the road, not the relative-turn Heading input used by Path extension.

Status

Reports modifying while an edit is in progress, applied when an edit succeeds, sampled when Sample path succeeds, or failed when a request is rejected. Connected behaviours run after completion, including failure. Check for applied or sampled before treating the other outputs as usable results.

Error

A readable explanation when Status is failed, such as a mismatched type, invalid geometry, occupied section, expired reference, or unsupported endless action. It is empty after success. Correct the input or obtain a current section reference before trying again.

Completion and safety

Requests run in order for this behaviour context, with at most 16 outstanding requests; further requests report failed until capacity is available. Wait for completion before issuing dependent changes. Disable, reset, scene changes, or teardown can cancel pending work without running connected behaviours. A successful result is rechecked before output delivery, but its owner or section can still disappear later; do not retain section IDs as permanent object references.