Scales force field size (scaleX/Y/Z changes radius/dimensions, non-uniform scaling allowed).
Takes handle (force field handle from b3dCreateForceField), scaleX/Y/Z (scale factors for each axis, multiplies initial radius for effect size).
Returns nothing.
3D Graphics
Parameters & Returns
Parameters
handleInt
scaleXDouble
scaleYDouble
scaleZDouble
Returns
Void
Quick Summary
Scales force field size (scaleX/Y/Z changes radius/dimensions, non-uniform scaling allowed).
Takes handle (force field handle from b3dCreateForceField), scaleX/Y/Z (scale factors for each axis, multiplies initial radius for effect size).
Returns nothing.
Technical Exegesis...
Scales force field size (scaleX/Y/Z changes radius/dimensions, non-uniform scaling allowed). Takes handle (force field handle from b3dCreateForceField), scaleX/Y/Z (scale factors for each axis, multiplies initial radius for effect size). Returns nothing. Sets ff.scale, resizes force field effect area for next physics update. Use to resize force fields dynamically, create ellipsoid shapes, or animate field sizes.
This function scales force field.
Scales force field size (scaleX/Y/Z changes radius/dimensions, non-uniform scaling allowed). Takes handle (force field handle from b3dCreateForceField), scaleX/Y/Z (scale factors for each axis, multiplies initial radius for effect size). Returns nothing. Sets ff.scale, resizes force field effect area for next physics update. Use to resize force fields dynamically, create ellipsoid shapes, or animate field sizes.
This function scales force field. Force field scaling: initial radius from b3dCreateForceField (uniform radius for all axes at creation), scale multiplies radius (effectiveSize = radius * scale, per-axis sizing), non-uniform scaling creates ellipsoid (different X/Y/Z scales create stretched or squashed fields). Scale parameters: scaleX = horizontal east-west size multiplier (scales radius along X axis), scaleY = vertical up-down size multiplier (scales radius along Y axis), scaleZ = horizontal north-south size multiplier (scales radius along Z axis), scale 1.0 = original size (no change, default from creation). Use cases: (1) Growing/shrinking fields (animate field size over time, expanding or contracting hazards), (2) Ellipsoid shapes (stretch fields along one axis, create tunnel or disc shapes), (3) Dynamic sizing (adjust field size based on gameplay state or triggers), (4) Pulsing effects (oscillate scale for pulsing force fields), (5) Character-relative sizing (scale field based on character distance or properties). Common patterns: uniform scale b3dScaleForceField(field, size, size, size) same all axes, vertical stretch b3dScaleForceField(field, 1.0, 3.0, 1.0) tall thin field, horizontal disc b3dScaleForceField(field, 3.0, 0.5, 3.0) flat wide field, pulse b3dScaleForceField(field, scale, scale, scale) where scale oscillates. Typical usage: set once for desired shape (configure ellipsoid or non-uniform field), call every frame for animated sizing (growing or pulsing effects), adjust dynamically based on gameplay (field grows when active, shrinks when inactive).
Uniform scaling: same scale all axes (scaleX = scaleY = scaleZ, maintains sphere or cone proportions), creates larger or smaller field (uniform growth or shrinkage), typical for simple resize (double size = scale 2.0, half size = scale 0.5). Non-uniform scaling: different scales per axis (creates ellipsoid shapes, stretched or squashed fields), vertical stretch (high scaleY, low scaleX/Z creates tall thin field), horizontal stretch (low scaleY, high scaleX/Z creates flat wide disc), tunnel shape (long scaleZ, small scaleX/Y creates tube). Growing field example: animate scale over time (scale = 0.5 + time * growthRate, starts small grows large), update field size (b3dScaleForceField(growingField, scale, scale, scale) uniform growth), expanding hazard (field starts small, expands to full size over duration). Pulsing field example: oscillate scale (scale = 1.0 + 0.3 * sin(time * frequency), varies +/-30% around base), update field size (b3dScaleForceField(pulsingField, scale, scale, scale) pulsing effect), breathing hazard (field expands and contracts rhythmically). Ellipsoid tunnel: horizontal tube shape (b3dScaleForceField(tunnelField, 0.5, 0.5, 5.0) long Z axis), creates wind tunnel (narrow round cross-section, long forward extent), directional force channel (cone field with ellipsoid shape guides characters). Vertical beam: tall thin beam (b3dScaleForceField(beamField, 0.3, 10.0, 0.3) tall Y axis), creates vertical force column (narrow horizontal, tall vertical), upward or downward force shaft. Horizontal disc: flat wide disc (b3dScaleForceField(discField, 5.0, 0.3, 5.0) wide X/Z axes), creates floor or ceiling effect (wide horizontal area, shallow vertical), gravity well or repulsion plate. Scale animation: interpolate between scales (currentScale = Lerp(startScale, endScale, t)), update field size (b3dScaleForceField(animField, currentScale.X, currentScale.Y, currentScale.Z)), smooth resize (smooth transition between sizes over time). Scale zero or negative: scale 0.0 creates zero-size field (no effect area, effectively disabled), negative scale inverts direction (unconventional, may cause unexpected behavior), recommend positive scales only (avoid zero or negative for normal use). Scale persistence: scale change immediate (takes effect next physics update), scale remains until changed again (persistent, doesn't reset), field at new scale until explicitly rescaled or deleted. Performance: O(1) operation (simple vector assignment), safe to call every frame (typical for animated or pulsing fields). Validation: silently returns if handle not found (invalid or deleted force field), no scale validation (any values allowed). Related: b3dCreateForceField creates force field (sets initial radius, uniform scale 1.0), b3dPositionForceField moves force field (complementary to scaling), b3dRotateForceField orients force field (complementary to scaling), b3dSetForceFieldConeAngle sets cone width (cone angle separate from scale).