Reference
Changelog
What changed in each release of Easy FP Full Body Controller, newest first. Breaking changes are marked, and the upgrade notes at the end list what to do before you update a project.
On this page
The full changelog ships in the package as CHANGELOG.md.
1.6.0 Latest#
Released 2026-10-09.
Added#
- Demo scenes and ready-made prefabs.
FBSystem_PlayerandFBSystem_CameraRig, plus three guided scenes. See Demos. - Smooth equip and unequip (holster). Switching items lowers the current item out of view, then raises the new one. Two-handed grips fade the left hand on and off. See Items.
- Finger grips with
HandPoseController, reusableFingerPosetemplates and per-item tweaks. The grips calibrate from the avatar's muscle limits. See Finger grips. - Footsteps with
PlayerFootsteps, detected from the animated feet. See Footsteps. - Item definitions and categories (
ItemDefinition,ItemCategory). See Definitions and categories. - Health and stamina (optional) with
PlayerVitalsandPlayerExertion. See Vitals and Stamina. PlayerInputHandler.InteractTriggeredandPlayerCameraController.IsLocalCameraActive.- The PurrNet and FishNet add-ons were rebuilt for this version, including holster and drop sync and item definitions.
Changed#
- Breaking Foot IK is now foot planting. The component is
PlayerFootPlanting, and the settings have new names. The foot settings of your scenes and prefabs reset to their defaults. Details are in the upgrade notes. - Event timing with smooth transitions.
ItemUnequippedfires while the item is still visible.ItemEquippedcan fire for an item that is still waiting to be drawn.OnEquipandOnUnequiponly fire for items that are shown. Turn off Smooth Transitions to get the instant behaviour back. UseCurrentItem()is ignored until the new item has been drawn.- Foot planting runs earlier (execution order −200), so hands no longer drift relative to the camera on stairs and uneven ground.
- Holding sprint while standing still no longer counts as sprinting.
- Setup tools find the package folder from their own location, so moving
FBSystemno longer breaks generated assets.
Fixed#
SetInputEnabled(false)left the player walking with the last input, and kept Jump and Flashlight presses latched.- The FPCutter invisible shader works on GLES, WebGL and Android. Hidden parts could render magenta there before. It is SRP Batcher compatible and casts correct spot and point light shadows.
- FPCutter fallback material uses the invisible shader instead of a visible Lit shader.
- The Setup Wizard's Create action for Player Settings failed when the settings folder did not exist. The validator's auto-fix could overwrite an existing settings asset.
- Inspectors no longer throw errors after a domain reload with a stale selection.
- The flashlight world item showed Item as its display name.
1.4.0 2026-09-08#
Added#
- Ground-anchored foot IK with automatic re-steps and a direct three-bone leg solver. It was first named
PlayerFootGlue; it isPlayerFootPlantingsince 1.6. - PurrNet multiplayer add-on for host-client co-op with 2 to 4 players, on PurrNet v1.22.0.
- FPCutter multi-mesh support. The wizard lists every
SkinnedMeshRendererof the character and processes the selected ones with a shared skeleton. The generated copy is a complete character.
Changed#
- Segmented FPCutter meshes recalculate their bounds, so skinned-mesh culling stays correct.
Removed#
- Breaking The legacy foot IK systems, including the
csHomebrewIKintegration, were removed. Scenes with the old components must be migrated. See the upgrade notes.
1.3.0 2026-08-28#
Added#
- Character Configuration Transfer. Copies the tuning and missing items of a finished player to a new character. See Transfer Configuration.
1.1.0 2026-07-30#
Added#
- Extensible event API. Each equip, unequip and locomotion change fires a C# event, a UnityEvent and any listener interface on the player, once per transition. See Event API.
- The demo
PlayerEventLoggerlogs every event to the Console.
Changed#
HandItemSocketis the single source of equip and unequip events.ItemContainerdrives the socket and no longer emits its own equip events.
Removed#
- Breaking
HandItemSocket.OnItemAttachedandOnItemDetachedwere renamed. The container's ownOnItemEquippedandOnItemUnequippedevents were removed.
1.0.0 Initial release#
First-person and third-person full-body controller with procedural IK, the Setup Wizard, FPCutter mesh cutting for first-person body-part hiding, and a demo scene with item pickup and drop.
Upgrade notes#
Read the notes for every version between your current version and the new one. Re-import the add-on packages you use after you update the base package.
Upgrading from 1.3 (includes 1.4 and 1.6)#
-
Remove the old foot IK components (1.4). Delete the legacy foot IK components from the player, including any
csHomebrewIKintegration. Then run , which adds the foot component. -
Foot IK is now foot planting (1.6). Renamed types and members:
PlayerFootGluetoPlayerFootPlanting,PlayerLegSolver(new name for the solver),GlueModetoPlantMode,StepParamstoStepSettings,PlayerController.FootGluetoFootPlanting,ResetGlue()toResetPlanting().Renamed inspector settings in 1.6
The settings have clearer names. Examples: Enable Foot Planting, Anchor Capture Range, Max Leg Extension, Lift Height, Arc Strength and Catch-Up Boost. Existing components stay attached, because script GUIDs did not change.
-
Foot settings reset to their defaults (1.6). Note your tuned values, then enter them again after the update. Use the defaults if you did not tune them. If an old
PlayerFootGlueentry shows as a missing script, remove it and addPlayerFootPlanting. Foot settings do not carry over. -
Item events changed (1.6). Items switch with a holster animation. Check any code or Inspector wiring that expects the old timing. See the 1.6.0 list above. To keep the old instant switch, turn off Smooth Transitions on
HandItemSocket. -
Sprint while standing still no longer counts (1.6). Animator and
SprintStartedonly fire while the player moves. -
Re-import the add-on (1.6). Re-import the FishNet or PurrNet add-on after the update. Older add-on packages do not compile against 1.6. The add-ons do not synchronize health.
Upgrading from 1.0 to 1.1#
- Inspector wiring: re-wire
OnItemAttachedtoOnItemEquippedandOnItemDetachedtoOnItemUnequipped. The payload is the same, the equipped item's GameObject. - Code: rename the subscriptions. For the container's removed events, subscribe to
HandItemSocket.ItemEquippedorItemUnequipped. The slot index is inItemEquipArgs.SlotIndex. ItemHoldData.OnEquip,OnUnequipandOnUseare unchanged.
All renamed members in 1.6
PlayerFootGlue→PlayerFootPlantingPlayerFootGlueSolver→PlayerLegSolverPlayerFootGlueEditor→PlayerFootPlantingEditorGlueMode→PlantModeStepParams→StepSettingsPlayerController.FootGlue→PlayerController.FootPlantingResetGlue()→ResetPlanting()