# Table of Contents - [Changelog | PWAS V2 Documentation](#changelog-pwas-v2-documentation) - [Introduction | PWAS V2 Documentation](#introduction-pwas-v2-documentation) - [Quickstart | PWAS V2 Documentation](#quickstart-pwas-v2-documentation) - [Procedural Editor | PWAS V2 Documentation](#procedural-editor-pwas-v2-documentation) - [Skeleton & Animation Setup | PWAS V2 Documentation](#skeleton-animation-setup-pwas-v2-documentation) - [Weapon Setup | PWAS V2 Documentation](#weapon-setup-pwas-v2-documentation) - [Recommended Workflow | PWAS V2 Documentation](#recommended-workflow-pwas-v2-documentation) - [PWAS Integration | PWAS V2 Documentation](#pwas-integration-pwas-v2-documentation) - [Procedural Aiming | PWAS V2 Documentation](#procedural-aiming-pwas-v2-documentation) - [Demo Project | PWAS V2 Documentation](#demo-project-pwas-v2-documentation) - [PWAS V2.0 | Changelog | PWAS V2 Documentation](#pwas-v2-0-changelog-pwas-v2-documentation) - [Troubleshooting | PWAS V2 Documentation](#troubleshooting-pwas-v2-documentation) - [Weapon Parts & Attachments | PWAS V2 Documentation](#weapon-parts-attachments-pwas-v2-documentation) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Introduction | PWAS V2 Documentation](#introduction-pwas-v2-documentation) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Weapon Setup | PWAS V2 Documentation](#weapon-setup-pwas-v2-documentation) - [Unknown](#unknown) - [Unknown](#unknown) - [Demo Project | PWAS V2 Documentation](#demo-project-pwas-v2-documentation) - [PWAS V2.0 | Changelog | PWAS V2 Documentation](#pwas-v2-0-changelog-pwas-v2-documentation) --- # Changelog | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/readme.md) . August 30, 2026 PWAS V2.0[](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog#pwas-v2.0) -------------------------------------------------------------------------------------- PWAS has finally received a massive update. GitBook Assistant ![](https://dannyboy730.gitbook.io/pwas-v2-documentation/~gitbook/image?url=https%3A%2F%2F1490981372-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F2AAKEHDjubjEbCdWWmC6%252Fuploads%252FY3wlq8NHkaWtELPc5OhG%252FPWASV2_Logo.png%3Falt%3Dmedia%26token%3D210fb0a4-c136-4e68-b099-56a76ccb6b8c&width=768&dpr=3&quality=100&sign=ea5c6e07dade8ebc7be1e1451ffbe67b&sv=3) PWAS V2 is a major update that expands the original procedural animation system and introduces a redesigned aiming system, modular weapon examples, attachments, third-person support, multiplayer examples, and extensive improvements to the core procedural systems. GitBook Assistant [Read full update](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026/pwas-v2.0) [Documentation](https://app.gitbook.com/s/yGcMr5qPaF0NuFsh2lwR) --- # Introduction | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/introduction.md) . **Procedural Weapon Animation System (PWAS)** is a Blueprint-based first-person weapon animation system for Unreal Engine. It provides procedural control over weapon movement and handling, including aiming, recoil, movement, sway, breathing, collision, running, jumping, and more. GitBook Assistant PWAS V2 also includes example systems for modular weapons, weapon parts, attachments, iron sights, optics, third-person weapons, and multiplayer replication. GitBook Assistant > **Important** The included demo project contains many systems that are **not required for PWAS to work**. Systems such as weapon firing, ammo, inventory, fire modes, third-person proxy weapons, and replication are provided as examples of how PWAS can be integrated into a complete weapon system. > > GitBook Assistant At its core, PWAS only requires your character/weapon system to provide the necessary references and call a small number of PWAS functions when actions such as aiming, firing, running, or changing weapon state occur. GitBook Assistant For the fastest setup, it is recommended to use or extend the included `**BP_WeaponMaster**` and demo character. If you already have your own weapon and character systems, PWAS can instead be integrated directly into them. GitBook Assistant **Recommended:** Use `BP_WeaponMaster` and the included demo character as your base unless you already have an existing weapon/character framework. GitBook Assistant [Quickstart](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart) [Recommended Workflow](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow) [NextQuickstart](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart) Last updated 19 days ago Was this helpful? --- # Quickstart | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart.md) . The fastest way to get started with PWAS V2 is to duplicate the included demo character (for backup) and the demo weapon closest to your own weapon type. This preserves the existing PWAS setup and lets you replace only what you need. GitBook Assistant Steps[](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart#steps) ----------------------------------------------------------------------------------------------- 1 #### Create a Backup of the Demo Character[](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart#create-a-backup-of-the-demo-character) Before making changes, duplicate the included demo character and keep the duplicate as a backup/reference. GitBook Assistant The demo character already contains the required PWAS references, input calls, weapon handling, and example integration. GitBook Assistant **Character Mesh Tags** GitBook Assistant PWAS uses Component Tags to automatically identify the character's first-person and third-person Skeletal Mesh components. GitBook Assistant * Add `FPMesh` to the **Component Tags** of the first-person Skeletal Mesh. GitBook Assistant * Add `TPMesh` to the **Component Tags** of the third-person or full-body Skeletal Mesh. GitBook Assistant These tags allow PWAS to automatically find the correct mesh for FP and TP functionality, including hand IK calculations. GitBook Assistant The included demo character already has these tags configured. If you are using the demo character as your base, no additional setup is required. GitBook Assistant 2 #### Duplicate a Similar Demo Weapon[](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart#duplicate-a-similar-demo-weapon) For example: GitBook Assistant * Rifle → duplicate the included Rifle GitBook Assistant * SMG → duplicate the SMG GitBook Assistant * Shotgun → duplicate the Shotgun GitBook Assistant * Pistol → duplicate the Pistol GitBook Assistant Replace the weapon assets and adjust its settings as needed. GitBook Assistant All demo weapons are already built on the included weapon framework, so this avoids recreating unnecessary setup. GitBook Assistant 3 #### Add the Weapon to the Character[](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart#add-the-weapon-to-the-character) Open the demo character and add your new weapon to the weapon array used to spawn the available weapons. GitBook Assistant Replace or remove the existing demo entries as needed. GitBook Assistant **Note** The demo character spawns every weapon listed in the weapon array. If you only want a limited loadout, such as a Primary and Secondary weapon, the spawning logic will need to be adjusted. GitBook Assistant 4 #### Assign and Customize the Weapon Preset[](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart#assign-and-customize-the-weapon-preset) Duplicate the Weapon Preset from the demo weapon and assign the duplicate as your new **Weapon Preset**. Open the **Weapon Preset** tab to customize the weapon's procedural behavior, including recoil, sway, movement, ADS, breathing, collision, and other settings. GitBook Assistant For optics, iron sights, modular weapon parts, attachments, or custom animation setup, continue to the relevant setup pages. GitBook Assistant **Note** Weapon Part and Attachment stat modifiers are configured in their Data Assets, not through the **Procedural Editor**. GitBook Assistant 5 ### Additional Setup[](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart#additional-setup) Your basic PWAS weapon should now be working. GitBook Assistant Continue to the relevant pages if your weapon needs: GitBook Assistant * Optics or iron sights GitBook Assistant * Weapon parts and attachments GitBook Assistant * Custom animation / IK setup GitBook Assistant * A completely custom weapon or character framework GitBook Assistant **Using your own framework?** The included demo Blueprints are not required. PWAS can be integrated into an existing weapon or character system by providing the required references and PWAS function calls. See **PWAS Integration** for the required references and function calls, or **Recommended Workflow** for an overview of using PWAS with a custom framework. GitBook Assistant [Weapon Setup](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup) [Recommended Workflow](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow) [PreviousIntroduction](https://dannyboy730.gitbook.io/pwas-v2-documentation) [NextRecommended Workflow](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow) Last updated 18 days ago Was this helpful? --- # Procedural Editor | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor.md) . Weapon Presets contain the main procedural configuration used by PWAS, including settings for: GitBook Assistant * Recoil GitBook Assistant * ADS / aiming GitBook Assistant * Sway GitBook Assistant * Movement GitBook Assistant * Breathing GitBook Assistant * Running GitBook Assistant * Jumping GitBook Assistant * Collision GitBook Assistant * Other procedural animation settings GitBook Assistant The included demo weapons already contain configured Weapon Presets that can be used as starting points. GitBook Assistant ### Recommended Workflow[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor#recommended-workflow) When creating a new weapon, it is recommended to duplicate the Weapon Preset from the included demo weapon that most closely matches your weapon type. GitBook Assistant For example: GitBook Assistant `DA_Rifle_Preset` → duplicate for another rifle GitBook Assistant Assign the duplicated preset to your weapon before making changes. GitBook Assistant You can then use the **Procedural Editor** to adjust the weapon's procedural behavior. GitBook Assistant > **Recommended** Start from an existing demo preset rather than creating every value from scratch. This provides a working baseline that can then be adjusted for the new weapon. > > GitBook Assistant ### Editing the Weapon Preset[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor#editing-the-weapon-preset) Select the Weapon Preset you want to modify and use the available Procedural Editor categories to adjust its settings. GitBook Assistant Changes can be made to the different procedural systems independently, allowing each weapon to have its own behavior. GitBook Assistant For example, different Weapon Presets can be used to give a pistol, rifle, shotgun, or sniper different: GitBook Assistant * Recoil behavior GitBook Assistant * ADS movement GitBook Assistant * Weapon sway GitBook Assistant * Movement intensity GitBook Assistant * Run position GitBook Assistant * Aim distance GitBook Assistant * Collision response GitBook Assistant * Procedural animation speeds GitBook Assistant Once the weapon behaves as desired, save the configured Weapon Preset. GitBook Assistant ### Saving and Backing Up Presets[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor#saving-and-backing-up-presets) After saving a Weapon Preset through the Procedural Editor, it is recommended to: GitBook Assistant 1. Save the Weapon Preset. GitBook Assistant 2. Use **Save All** in Unreal Engine. GitBook Assistant 3. Duplicate the saved Weapon Preset Data Asset and keep the duplicate as a backup. GitBook Assistant For example: GitBook Assistant `DA_Rifle_Preset` GitBook Assistant can be duplicated as: GitBook Assistant `DA_Rifle_Preset_Backup` GitBook Assistant or: GitBook Assistant `DA_Rifle_Preset_Final` GitBook Assistant > **Important** Keeping a duplicated copy of a finished preset is recommended. In some cases, changes made through the Procedural Editor may not persist correctly after restarting Unreal Engine. Keeping a backup helps prevent accidentally losing a completed procedural setup. > > GitBook Assistant You can continue editing the working preset while keeping the duplicated version unchanged as a backup. GitBook Assistant ### Weapon Presets and Attachments[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor#weapon-presets-and-attachments) The Weapon Preset represents the weapon's **base procedural configuration**. GitBook Assistant Weapon Parts and Attachments can apply additional stat modifiers on top of the Weapon Preset when equipped. GitBook Assistant For example: GitBook Assistant * A Stock can modify recoil. GitBook Assistant * A Foregrip can modify recoil or handling. GitBook Assistant * An Optic can modify ADS-related settings. GitBook Assistant * Other Weapon Parts can apply their own procedural modifiers. GitBook Assistant > **Note** Weapon Part and Attachment stat modifiers are configured inside their respective Data Assets. They are not edited through the Procedural Editor. > > GitBook Assistant This allows a weapon to keep one base Weapon Preset while equipped parts dynamically modify the relevant settings. GitBook Assistant ### Using Multiple Weapon Presets[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor#using-multiple-weapon-presets) Each weapon can use its own Weapon Preset. GitBook Assistant When changing weapons, the current Weapon Preset should be provided to PWAS using: GitBook Assistant `Update Stats` GitBook Assistant The included demo framework already handles this when switching weapons. GitBook Assistant If you are integrating PWAS into your own weapon system, make sure `Update Stats` is called whenever the active weapon and its Weapon Preset change. GitBook Assistant See **PWAS Integration** for more information about updating PWAS when equipping weapons. GitBook Assistant [PreviousWeapon Setup](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup) [NextPWAS Integration](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration) Last updated 18 days ago Was this helpful? --- # Skeleton & Animation Setup | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup.md) . PWAS V2's included Animation Blueprint is set up for the **UE5 Manny skeleton and IK bone structure**. GitBook Assistant If you are using the included character/skeleton, this setup is already complete. This section is mainly required when replacing the character skeleton or adding your own animations. GitBook Assistant ### Character Mesh Tags[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup#character-mesh-tags) * `FPMesh` — add to the first-person/local player Skeletal Mesh component. GitBook Assistant * `TPMesh` — add to the third-person/full-body Skeletal Mesh component. GitBook Assistant * PWAS uses these tags to automatically locate the appropriate character mesh for FP/TP functionality, including hand IK calculations. GitBook Assistant ### Required IK Bones[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup#required-ik-bones) PWAS uses the standard IK bones: GitBook Assistant * `ik_hand_gun` GitBook Assistant * `ik_hand_l` GitBook Assistant * `ik_hand_r` GitBook Assistant These are used for weapon positioning and hand IK. GitBook Assistant > **Note** If your character uses a different skeleton or different bone names, the included Animation Blueprint will need to be adapted. > > GitBook Assistant ### Required Virtual Bones[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup#required-virtual-bones) The procedural aiming setup uses two Virtual Bones: GitBook Assistant * `VB ik_hand_gun_parent` GitBook Assistant * `VB ik_hand_gun_ads` GitBook Assistant These allow PWAS to calculate and apply procedural aiming without modifying the actual `head` bone. GitBook Assistant **Create them as follows:** GitBook Assistant 1. Right-click the `head` bone and add a Virtual Bone targeting `head`. GitBook Assistant 2. Rename it to `VB ik_hand_gun_parent`. GitBook Assistant 3. Right-click `VB ik_hand_gun_parent` and add another Virtual Bone targeting `head`. GitBook Assistant 4. Rename the new Virtual Bone to `VB ik_hand_gun_ads`. GitBook Assistant The final hierarchy should look like: GitBook Assistant GitBook AssistantAskCopy head└─ VB ik_hand_gun_parent └─ VB ik_hand_gun_ads > **Important** These Virtual Bones are already included with the demo skeleton and do not need to be recreated unless you are setting up another skeleton. > > GitBook Assistant ### Animation Curves[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup#animation-curves) Custom weapon animations may require the following curves: GitBook Assistant Curve Purpose `LeftGripAlpha` GitBook Assistant Releases the left hand from PWAS hand IK GitBook Assistant `RightGripAlpha` GitBook Assistant Releases the right hand from PWAS hand IK GitBook Assistant `AimLockLoc` GitBook Assistant Allows animation influence over ADS location GitBook Assistant `AimLockRot` GitBook Assistant Allows animation influence over ADS rotation GitBook Assistant `ReloadRunAlpha` GitBook Assistant Disables the run pose GitBook Assistant `ReloadAimAlpha` GitBook Assistant Reduces third-person/full-body procedural aim pitch during reload animations GitBook Assistant #### Curve values are inverted[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup#curve-values-are-inverted) These curves use an inverted value compared with a typical Alpha: GitBook Assistant `**0**` **= Fully locked / enabled** `**1**` **= Fully released / animation controlled** GitBook Assistant For example, during a reload where the left hand leaves the weapon: GitBook Assistant GitBook AssistantAskCopy LeftGripAlpha = 0 → hand remains locked to the grip LeftGripAlpha = 1 → hand follows the reload animation The same principle applies to `RightGripAlpha`, `ReloadRunAlpha`, `ReloadAimAlpha`, `AimLockLoc`, and `AimLockRot`. GitBook Assistant ![](https://dannyboy730.gitbook.io/pwas-v2-documentation/~gitbook/image?url=https%3A%2F%2F3634151805-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FyGcMr5qPaF0NuFsh2lwR%252Fuploads%252FoWcpmEd8Y1W9lnhU97rV%252F2.png%3Falt%3Dmedia%26token%3D6ce079b7-5a10-45fd-9816-5fece769b00c&width=768&dpr=3&quality=100&sign=27b1c34eab52479ade391710dd16871b&sv=3) ![](https://dannyboy730.gitbook.io/pwas-v2-documentation/~gitbook/image?url=https%3A%2F%2F3634151805-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FyGcMr5qPaF0NuFsh2lwR%252Fuploads%252F0IpEYvXC2lq2f29QBc0B%252F3.png%3Falt%3Dmedia%26token%3D9f95c5c7-97be-4e11-9aba-0ba0621bfb6d&width=768&dpr=3&quality=100&sign=bacb171cb6e2286f16fd0cdba76c8ac1&sv=3) ### Aim Lock Curves[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup#aim-lock-curves) `AimLockLoc` and `AimLockRot` are mainly used by the **iron-sight aiming path** to add some animation movement while maintaining procedural alignment. GitBook Assistant Location and rotation are separate because rotational movement can usually be much stronger without making the weapon feel disconnected from the camera. GitBook Assistant By default, optics use PWAS's alternate aiming path, which preserves more of the original animation movement automatically. GitBook Assistant > **Optional** If you prefer the tighter iron-sight aiming behavior for all sights, you can bypass the `Blend Poses by Bool` in the Procedural Aim section of the Animation Blueprint and use the iron-sight aiming path for optics as well. > > GitBook Assistant ### Reload Aim Alpha[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup#reload-aim-alpha) `ReloadAimAlpha` can be used by third-person/full-body reload animations to reduce the amount of procedural aim pitch applied while the reload is playing. GitBook Assistant Like the other PWAS animation curves, its values are inverted: GitBook Assistant `0` = Full procedural aim pitch `1` = No procedural aim pitch GitBook Assistant Intermediate values partially reduce the procedural pitch. GitBook Assistant This is useful during sections of a reload where the hands, magazine, or other weapon parts need to remain aligned with the authored animation. At extreme up/down aiming angles, full procedural pitch can otherwise cause detached magazines or hand interactions to appear misaligned. GitBook Assistant For example, raise `ReloadAimAlpha` while the magazine is removed and lower it again as the reload returns to the normal weapon pose. GitBook Assistant > **Note** This curve is intended for the third-person/full-body procedural aiming setup and does not need to be used for first-person aiming. > > GitBook Assistant ### Using Your Own Animations[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup#using-your-own-animations) When replacing the included reload, rechamber, inspect, or other weapon animations: GitBook Assistant * Add the grip curves whenever a hand needs to leave its normal IK position. GitBook Assistant * Add `AimLockLoc` / `AimLockRot` only when additional movement during procedural ADS is desired. GitBook Assistant * Keep the curve at `0` wherever PWAS should retain full control. GitBook Assistant [PreviousPWAS Integration](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration) [NextProcedural Aiming](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming) Last updated 17 days ago Was this helpful? --- # Weapon Setup | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup.md) . The easiest way to create a new weapon is to duplicate the included demo weapon that most closely matches your weapon type and replace its assets. GitBook Assistant For example, use the included Rifle as a base for another rifle, the SMG for another SMG, and so on. GitBook Assistant ### 1\. Replace the Weapon Mesh[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup#id-1.-replace-the-weapon-mesh) Replace the existing weapon mesh with your own. GitBook Assistant The main weapon mesh/component should have the component tag: GitBook Assistant `Body` GitBook Assistant `Body` is used by several included systems as the default weapon component and as a fallback parent for parts and attachments. GitBook Assistant `LeftHandIK` GitBook Assistant `LeftHandIK` Tells PWAS that the weapon or part provides a Left Hand IK point. A corresponding `LeftHandIK` socket is also required on the relevant weapon mesh, Weapon Part, or Attachment. GitBook Assistant `RightHandIK` GitBook Assistant `RightHandIK` Works the same way for the right hand and uses the corresponding `RightHandIK` setup. GitBook Assistant > **Important** It is recommended to keep the `Body` tag even if your weapon uses modular Weapon Parts. > > GitBook Assistant ### 2\. Assign a Weapon Preset[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup#id-2.-assign-a-weapon-preset) Duplicate the Weapon Preset used by the demo weapon and assign the duplicate to **Weapon Preset**. GitBook Assistant The Weapon Preset contains the procedural settings used by PWAS, including: GitBook Assistant * Recoil GitBook Assistant * ADS GitBook Assistant * Sway GitBook Assistant * Movement GitBook Assistant * Breathing GitBook Assistant * Running GitBook Assistant * Jumping GitBook Assistant * Collision GitBook Assistant * Other procedural settings GitBook Assistant Open the **Weapon Preset** tab to customize these values. GitBook Assistant See **Procedural Editor** for information about editing, saving, and backing up Weapon Presets. GitBook Assistant [Procedural Editor](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor) > **Note** Weapon Part and Attachment stat modifiers are configured in their Data Assets and are not edited through the Procedural Editor. > > GitBook Assistant ### 3\. Replace Weapon-Specific Assets[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup#id-3.-replace-weapon-specific-assets) Replace any other assets needed by your weapon, such as: GitBook Assistant * Animations GitBook Assistant * Magazines GitBook Assistant * Sounds GitBook Assistant * Casings GitBook Assistant * Muzzle effects GitBook Assistant * Weapon Parts or Attachments GitBook Assistant Most of these belong to the included demo weapon framework and are **not required for PWAS itself**. GitBook Assistant ### What PWAS Actually Uses[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup#what-pwas-actually-uses) From `BP_WeaponMaster`, the main data PWAS cares about is: GitBook Assistant * **Weapon Preset** GitBook Assistant * Procedural stat modifiers provided by **Weapon Parts** GitBook Assistant * Procedural stat modifiers provided by **Weapon Attachments** GitBook Assistant Variables such as ammo, fire rate, fire modes, bullet class, reload logic, and similar weapon gameplay settings are part of the included demo framework and can be replaced with your own systems. GitBook Assistant ### Using Your Own Weapon Blueprint[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup#using-your-own-weapon-blueprint) You do not need to use `BP_WeaponMaster`. GitBook Assistant If your project already has a weapon framework, keep your existing weapon Blueprint and provide PWAS with the required weapon preset/references and function calls. GitBook Assistant The included `BP_WeaponMaster` can be used as a reference for the integration. GitBook Assistant [Procedural Aiming](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming) [Weapon Parts & Attachments](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments) [PreviousRecommended Workflow](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow) [NextProcedural Editor](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor) Last updated 17 days ago Was this helpful? --- # Recommended Workflow | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow.md) . PWAS V2 can either be used with the included demo framework or integrated into your own existing weapon and character systems. GitBook Assistant For most users, it is recommended to use the included demo framework as a starting point. GitBook Assistant #### Recommended: Modify the Included Demo[](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow#recommended-modify-the-included-demo) The fastest workflow is to build on the included **demo character** and `**BP_WeaponMaster**`. GitBook Assistant These already contain the references and example logic required to communicate with PWAS, including aiming, firing, running, weapon switching, attachments, and other supported actions. GitBook Assistant You can remove or replace any demo functionality that your project does not need. GitBook Assistant > **Important** Systems such as weapon firing, ammo, inventory, fire modes, third-person proxy weapons, and replication are example implementations. They are not required by PWAS itself. > > GitBook Assistant #### Using Your Own Framework[](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow#using-your-own-framework) If your project already has a weapon or character system, you do not need to replace it with the included demo Blueprints. GitBook Assistant Instead, integrate PWAS into your existing framework by: GitBook Assistant 1. Adding the required PWAS component and references. GitBook Assistant 2. Assigning the current Weapon Preset and weapon data. GitBook Assistant 3. Calling the appropriate PWAS functions when actions occur, such as aiming, firing, running, or changing weapon state. GitBook Assistant The exact implementation can differ between projects. The included demo Blueprints can be used as a reference for how these calls are handled. GitBook Assistant #### Which Should You Choose?[](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow#which-should-you-choose) **Use the demo framework if:** GitBook Assistant * You are starting a new project. GitBook Assistant * You want the fastest setup. GitBook Assistant * You want the included modular weapon, attachment, third-person, or multiplayer examples. GitBook Assistant **Use your own framework if:** GitBook Assistant * You already have a working weapon system. GitBook Assistant * You only want PWAS for procedural animation. GitBook Assistant * You prefer to handle firing, inventory, replication, or weapon logic yourself. GitBook Assistant [PWAS Integration](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration) [PreviousQuickstart](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart) [NextWeapon Setup](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup) Last updated 19 days ago Was this helpful? --- # PWAS Integration | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration.md) . PWAS does not control your character's gameplay logic directly. Instead, your character or weapon system informs PWAS when relevant gameplay states change, such as aiming, firing, running, crouching, or equipping a new weapon. GitBook Assistant The included demo character already contains these calls. This section is mainly required if you are integrating PWAS into your own character or weapon framework. GitBook Assistant > **Important** Your implementation does not need to match the demo Blueprints exactly. PWAS only needs to receive the appropriate references and function calls when the corresponding gameplay events occur. > > GitBook Assistant ### 1\. Initialize PWAS[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#id-1.-initialize-pwas) PWAS should first be initialized using `Init Player`. GitBook Assistant Provide: GitBook Assistant * **Camera** — the Camera Component used by the local player. GitBook Assistant * **Player** — the player Character/Pawn. GitBook Assistant * **Weapon** — the current weapon Actor, if one already exists. GitBook Assistant * **Update HUD** — only required if using the included HUD functionality. GitBook Assistant The **Weapon** input can be left empty if your weapons are spawned or equipped after PWAS is initialized. The weapon reference can be supplied later using `Update Weapon Ref`. GitBook Assistant In the included demo, PWAS is initialized for the locally controlled player. GitBook Assistant ### **Update Camera Transform**[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#update-camera-transform) `Init Player` automatically stores the Camera's current relative location and rotation for use by the procedural aiming system. GitBook Assistant PWAS uses this stored transform as the Camera's **base reference transform** rather than continuously reading the Camera Component every frame. This prevents temporary Camera movement, such as camera recoil, from affecting procedural weapon alignment. GitBook Assistant If the Camera's base relative transform changes during gameplay, call `Update Camera Transform` after the change. GitBook Assistant For example, this may be required when: GitBook Assistant * Changing the Camera's relative location or rotation. GitBook Assistant * Switching between different first-person Camera setups. GitBook Assistant * Dynamically changing the player's base Camera position. GitBook Assistant > **Important** Do not call `Update Camera Transform` every Tick or while applying temporary Camera effects such as recoil. The function is intended to update the Camera's base/reference transform only. > > GitBook Assistant `Update Camera Transform` is already called automatically by `Init Player`, so no additional call is required during normal initialization. GitBook Assistant ### 2\. Updating PWAS When Equipping a Weapon[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#id-2.-updating-pwas-when-equipping-a-weapon) When a new weapon is equipped, PWAS needs to know which Weapon Preset and weapon Actor it should use. GitBook Assistant The included demo updates these in the following order: GitBook Assistant #### Update Stats[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#update-stats) Call `Update Stats` and provide the new weapon's **Weapon Preset**. GitBook Assistant This updates PWAS with the procedural settings for the currently equipped weapon. GitBook Assistant These include settings such as: GitBook Assistant * Recoil GitBook Assistant * ADS GitBook Assistant * Movement GitBook Assistant * Sway GitBook Assistant * Running GitBook Assistant * Breathing GitBook Assistant * Collision GitBook Assistant * Other procedural settings GitBook Assistant #### Update Weapon Ref[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#update-weapon-ref) Call `Update Weapon Ref` and provide the currently equipped weapon Actor. GitBook Assistant PWAS uses this reference when locating required sockets and other weapon-specific information. GitBook Assistant > **Important** If you change weapons without updating the Weapon Preset and Weapon Reference, PWAS may continue using information from the previously equipped weapon. > > GitBook Assistant #### Update Attachment / Parts Stats[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#update-attachment-parts-stats) If you are using the included **Weapon Parts and Attachments** system, call: GitBook Assistant `Update Attachment / Parts Stats` GitBook Assistant and provide the currently equipped attachments and Weapon Parts. GitBook Assistant This applies any procedural stat modifiers provided by those items. GitBook Assistant This call is **not required** if your project does not use the included Weapon Parts or Attachment stat system. GitBook Assistant ### 3\. Firing and Recoil[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#id-3.-firing-and-recoil) #### Start Fire[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#start-fire) Call `Start Fire` when a shot is fired. GitBook Assistant This activates the procedural recoil behavior. GitBook Assistant #### Stop Fire[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#stop-fire) `Stop Fire` should be called after firing so that the recoil return spring can activate. GitBook Assistant The amount of time between `Start Fire` and `Stop Fire` affects how the recoil behaves. A longer delay before `Stop Fire` can therefore change the appearance and feel of the recoil return. GitBook Assistant > **Important** Do not leave PWAS in its firing state after a shot. `Stop Fire` is required for the recoil return spring to behave correctly. > > GitBook Assistant For automatic weapons, these calls can be integrated into your existing firing/timer logic. GitBook Assistant ### 4\. Aiming[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#id-4.-aiming) Call: GitBook Assistant `Toggle Aim` GitBook Assistant whenever the player's aiming state changes. GitBook Assistant * `true` — enter ADS. GitBook Assistant * `false` — leave ADS. GitBook Assistant PWAS uses this state for its procedural ADS system and related aiming behavior. GitBook Assistant ### 5\. Running[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#id-5.-running) Call: GitBook Assistant `Toggle Run` GitBook Assistant whenever the player's running/sprinting state changes. GitBook Assistant * `true` — player is running. GitBook Assistant * `false` — player has stopped running. GitBook Assistant This controls PWAS's procedural running behavior. GitBook Assistant #### Toggle Run Alpha[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#toggle-run-alpha) `Toggle Run Alpha` controls the checking of the animation curve used to reduce the procedural run pose. GitBook Assistant This is primarily useful when animations such as reloads need to partially or completely override the normal procedural running pose. GitBook Assistant As the curve value approaches `1`, less of the procedural run pose is applied. GitBook Assistant Because this curve is checked using a timer, `Toggle Run Alpha` can be used to enable the check only when it is needed. GitBook Assistant This function is optional unless your animation setup makes use of the Run Alpha curve. GitBook Assistant ### 6\. Crouching[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#id-6.-crouching) Call: GitBook Assistant `Toggle Crouch` GitBook Assistant whenever the player's crouch state changes. GitBook Assistant * `true` — crouched. GitBook Assistant * `false` — standing. GitBook Assistant This allows PWAS to transition to and from its procedural crouch behavior. GitBook Assistant ### 7\. Sliding[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#id-7.-sliding) If your character supports sliding, call: GitBook Assistant `Toggle Slide` GitBook Assistant when the slide state changes. GitBook Assistant * `true` — sliding. GitBook Assistant * `false` — no longer sliding. GitBook Assistant This controls the procedural slide animation system. GitBook Assistant This function is only required if you are using PWAS's sliding functionality. GitBook Assistant ### 8\. Hold Breath[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#id-8.-hold-breath) Call: GitBook Assistant `Toggle Hold Breath` GitBook Assistant when the player starts or stops holding their breath. GitBook Assistant This can be used to reduce breathing-related procedural movement while aiming. GitBook Assistant This function is optional and only required if your project uses the Hold Breath functionality. GitBook Assistant ### 9\. Changing Sights[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#id-9.-changing-sights) Call: GitBook Assistant `Toggle Sight` GitBook Assistant when the player switches between available sights or aim points. GitBook Assistant For example, this can be called when scrolling between: GitBook Assistant * Multiple optic aim points GitBook Assistant * Iron sights GitBook Assistant * Backup sights GitBook Assistant * Canted sights GitBook Assistant PWAS then updates the selected Aim Point used the next time the appropriate sight is selected. GitBook Assistant ### 10\. Holstering[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#id-10.-holstering) Call: GitBook Assistant `Toggle Holster` GitBook Assistant when the weapon's holster state changes. GitBook Assistant * `true` — holster the weapon. GitBook Assistant * `false` — return the weapon from the holstered state. GitBook Assistant This function is only required if you are using PWAS's procedural holster functionality. GitBook Assistant ### 11\. Sight FOV[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#id-11.-sight-fov) PWAS provides a function for retrieving the currently selected sight's ADS FOV. GitBook Assistant Use: GitBook Assistant `Get Sight FOV` GitBook Assistant when your camera system needs to determine the correct FOV while aiming. GitBook Assistant Sight Attachments can override the normal ADS FOV, so using this function ensures the camera receives the FOV configured for the currently selected sight. GitBook Assistant If the sight does not override the ADS FOV, your normal weapon ADS FOV can be used instead. GitBook Assistant ### Core Integration Calls[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#core-integration-calls) For a typical FPS implementation, the most important PWAS calls are: GitBook Assistant * `Init Player` GitBook Assistant * `Update Stats` GitBook Assistant * `Update Weapon Ref` GitBook Assistant * `Start Fire` GitBook Assistant * `Stop Fire` GitBook Assistant * `Toggle Aim` GitBook Assistant * `Toggle Run` GitBook Assistant * `Toggle Crouch` GitBook Assistant > **Note** Additional functions such as `Update Camera Transform`, `Toggle Slide`, `Toggle Hold Breath`, `Toggle Holster`, `Toggle Sight`, `Toggle Run Alpha`, and attachment/part stat updates are only needed when using their corresponding functionality. `Update Camera Transform` only needs to be called manually if the Camera's base relative transform changes after initialization. > > GitBook Assistant ### Multiplayer[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration#multiplayer) The exact replication setup depends on your project. GitBook Assistant The included demo contains an example multiplayer implementation where PWAS calls are triggered from the appropriate local, server, or replicated gameplay events. GitBook Assistant You do not need to copy the demo's networking structure exactly. Integrate the PWAS calls into the replication model already used by your character and weapon framework. GitBook Assistant [PreviousProcedural Editor](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor) [NextSkeleton & Animation Setup](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup) Last updated 18 days ago Was this helpful? --- # Procedural Aiming | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming.md) . PWAS V2 automatically detects available optics and iron sights using sockets on the weapon, Weapon Parts, and Attachments. GitBook Assistant Sight priority is controlled by the number at the end of each socket name. GitBook Assistant ### Optics[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#optics) Optics only require a single Aim Point socket: GitBook Assistant `AimPoint_#` GitBook Assistant For example: GitBook Assistant * `AimPoint_1` GitBook Assistant * `AimPoint_2` GitBook Assistant * `AimPoint_3` GitBook Assistant Place the socket where you want the camera to align when aiming through that sight. GitBook Assistant > **Tip** Move the `AimPoint_#` socket forward or backward to configure the optic's default eye distance. If the same optic requires different distances on different weapons, use **Attachment Aim Distance Offset** in the Weapon Preset instead of duplicating or repositioning the Attachment. > > GitBook Assistant The number determines the sight's priority/order. Lower numbers are selected first. GitBook Assistant An optic may also contain multiple Aim Points, such as a magnified optic with an additional canted sight. GitBook Assistant If multiple Aim Points use the same suffix, later entries are moved to the next available sight position. GitBook Assistant ### Primary and Secondary Sight FOV[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#primary-and-secondary-sight-fov) When an Attachment contains multiple sight options, the sight with the **lowest suffix number** has the highest priority and is selected first. GitBook Assistant For example: GitBook Assistant `AimPoint_1` → before `AimPoint_2` GitBook Assistant `IronSightRear_1 / IronSightFront_1` → before `IronSightRear_2 / IronSightFront_2` GitBook Assistant If an `AimPoint_#` and an iron-sight pair use the **same suffix number**, the `AimPoint_#` is prioritized. GitBook Assistant The Attachment's primary sight can use its **ADS FOV Override**, while secondary sights on the same Attachment use the weapon's normal ADS FOV. GitBook Assistant For a combined magnified optic with a backup sight, it is recommended to give the main optic the lowest suffix. For example: GitBook Assistant `AimPoint_1` — primary magnified optic `IronSightRear_2 / IronSightFront_2` — backup iron sights GitBook Assistant This allows the main optic to use its magnified FOV while the backup sight uses the weapon's normal ADS FOV. GitBook Assistant If multiple sights require their own independent magnified FOV values, configure them as separate Attachments/Data Assets. GitBook Assistant ### Attachment Aim Distance Offset[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#attachment-aim-distance-offset) Some Attachments may require a different aiming distance depending on the weapon they are equipped on. GitBook Assistant For example, the same Red Dot Sight may look correct on a rifle but sit too close to the Camera when mounted on a pistol. GitBook Assistant The Weapon Preset provides: GitBook Assistant `Attachment Aim Distance Offset` GitBook Assistant This adds a weapon-specific distance adjustment to sights provided by Attachments without requiring the Attachment's `AimPoint_#` or iron-sight sockets to be modified. GitBook Assistant * `0` — no additional offset. GitBook Assistant * Positive values — move the attached sight/weapon farther from the Camera. GitBook Assistant * Negative values — move it closer. GitBook Assistant The offset applies to Attachment-based sights, including optics and Attachment-based iron sights. The weapon's main/base iron sights are not affected. GitBook Assistant This allows the same Attachment to be reused across weapons with different proportions while keeping an appropriate ADS distance. GitBook Assistant ### Parallax / Magnified Optic Setup[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#parallax-magnified-optic-setup) The included demo framework contains an optional parallax/proximity effect for magnified optics such as scopes, ACOGs, and similar sights. GitBook Assistant The effect gradually hides selected parts of the optic mesh as the camera approaches the correct eye-relief position. This prevents the rear of the scope from obstructing the player's view while aiming through the optic. GitBook Assistant > **Note** This system is part of the included demo framework and is not required for PWAS procedural aiming. Projects that already use their own scope or optic rendering system can ignore this setup. > > GitBook Assistant ### Enabling the Parallax Optic Effect[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#enabling-the-parallax-optic-effect) When using an Attachment Data Asset, add the following name to **Attachment Tags**: GitBook Assistant `ParallaxOptic` GitBook Assistant When the Attachment is spawned, this tag is applied to the spawned Attachment and enables the parallax/proximity update logic in `BP_AttachmentBase`. GitBook Assistant Attachments do not have to receive this tag through a Data Asset. If you are using a child Blueprint of `BP_AttachmentBase`, `ParallaxOptic` can instead be added manually to the Attachment mesh's **Component Tags**. GitBook Assistant > **Important** Adding `ParallaxOptic` to a standalone Static Mesh is not enough to enable the effect. The proximity logic is handled by `BP_AttachmentBase`, so the optic must be spawned through the included Attachment system or use a child Blueprint of `BP_AttachmentBase`. > > GitBook Assistant ### ScopeEyeRelief Socket[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#scopeeyerelief-socket) The optic mesh must contain a socket named: GitBook Assistant `ScopeEyeRelief` GitBook Assistant PWAS uses this socket as the reference point when calculating the distance between the optic and the player's Camera. GitBook Assistant As the Camera approaches the `ScopeEyeRelief` socket, `BP_AttachmentBase` calculates the proximity value and updates the material parameter: GitBook Assistant `ScopeProximityAlpha` GitBook Assistant This value is then used by the optic material to progressively hide the required portions of the mesh. GitBook Assistant The ideal position of `ScopeEyeRelief` depends on the optic. GitBook Assistant For example, a large rifle scope and a compact optic such as an ACOG may require different socket positions. Move the socket until the mesh begins and finishes clipping at the desired camera distance. GitBook Assistant > **Note** `ScopeEyeRelief` does not necessarily need to be placed directly on the rear lens. Its position can be adjusted to control when the proximity effect begins and reaches its full value. > > GitBook Assistant Some optics may require the socket to be positioned differently to preserve additional geometry. For example, the included ACOG uses a different eye-relief position so its built-in front iron sight remains visible when aiming through the optic. GitBook Assistant ### Scope Proximity Distance[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#scope-proximity-distance) The included `BP_AttachmentBase` uses the Camera's distance from `ScopeEyeRelief` to determine `ScopeProximityAlpha`. GitBook Assistant The proximity transition is controlled by: GitBook Assistant * **Clip Start Distance** — distance at which the mesh begins transitioning. GitBook Assistant * **Clip Full Distance** — distance at which the proximity effect reaches its full value. GitBook Assistant These can be adjusted to change how quickly the optic transitions as the Camera moves toward the eye-relief position. GitBook Assistant ### Clip Plane Position[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#clip-plane-position) The included masked optic material uses: GitBook Assistant `ClipPlanePosition` GitBook Assistant to control how far through the optic mesh the clipping plane is positioned. GitBook Assistant Adjust this value per optic until the correct portion of the mesh is removed when aiming. GitBook Assistant Different optic shapes may require different values. A long scope, compact ACOG, or other magnified optic may not use the same clipping position. GitBook Assistant The included material handles the required direction internally, so `ClipPlanePosition` can be configured using a normal positive value in the Material Instance. GitBook Assistant #### Material Setup[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#material-setup) Only the mesh sections that should disappear while approaching the scope should use a material that supports the included clipping system. GitBook Assistant The included material uses: GitBook Assistant `ScopeProximityAlpha` GitBook Assistant together with `ClipPlanePosition` to control the **Opacity Mask** and progressively remove the required geometry. GitBook Assistant Other mesh sections that should remain visible should use normal/non-clipped material instances. GitBook Assistant This is especially important for optics containing additional geometry such as: GitBook Assistant * Built-in iron sights GitBook Assistant * Mounts GitBook Assistant * Adjustment controls GitBook Assistant * Exterior parts that should remain visible while aiming GitBook Assistant If geometry that should remain visible shares the same material slot as geometry that needs to be clipped, the optic may need separate material slots or masked/non-masked material variants. GitBook Assistant The included ACOG demonstrates this setup by using masked material variants only on the portions of the optic that should be affected by the proximity effect. GitBook Assistant > **Important** Do not apply the clipping material to every material slot unless the entire optic should be affected. Only the intended mesh sections should use the masked version. > > GitBook Assistant #### Non-Magnified Optics[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#non-magnified-optics) Red dots, holographic sights, pistol red dots, and other non-magnified optics do not normally require the included parallax/proximity scope effect. GitBook Assistant Only add `ParallaxOptic` when the optic is intended to use this functionality. GitBook Assistant ### Iron Sights[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#iron-sights) Iron sights use separate **Rear** and **Front** sockets so PWAS can calculate the correct sight line automatically. GitBook Assistant The suffix number must match: GitBook Assistant `IronSightRear_1` `IronSightFront_1` GitBook Assistant Another pair could use: GitBook Assistant `IronSightRear_2` `IronSightFront_2` GitBook Assistant PWAS pairs the Rear and Front sockets using this number and calculates the required alignment automatically. GitBook Assistant This means the iron sights can have different heights or be canted without requiring a manually positioned Aim Point. GitBook Assistant #### Main Iron Sights[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#main-iron-sights) The weapon's default/base iron sights should use: GitBook Assistant `MainIronSightRear_#` `MainIronSightFront_#` GitBook Assistant For example: GitBook Assistant `MainIronSightRear_1` `MainIronSightFront_1` GitBook Assistant These are treated as the weapon's built-in iron sights and can be ignored when an Attachment is configured to **Override Base Iron Sight**. GitBook Assistant Additional or detachable iron sights should use the normal: GitBook Assistant `IronSightRear_#` `IronSightFront_#` GitBook Assistant This allows PWAS to distinguish the weapon's base sights from additional sights such as canted or attachment-mounted irons. GitBook Assistant ### Iron Sight Eye Distance[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#iron-sight-eye-distance) An optional Eye Point socket can be added to the Rear sight mesh to control how far the camera sits behind the iron sights. GitBook Assistant For normal/additional iron sights, use: GitBook Assistant `IronSightEyePoint_#` GitBook Assistant For the weapon's main/base iron sights, use: GitBook Assistant `MainIronSightEyePoint_#` GitBook Assistant The suffix must match the corresponding Rear and Front pair. GitBook Assistant For example: GitBook Assistant `MainIronSightRear_1` `MainIronSightFront_1` `MainIronSightEyePoint_1` GitBook Assistant or: GitBook Assistant `IronSightRear_2` `IronSightFront_2` `IronSightEyePoint_2` GitBook Assistant If no matching Eye Point exists, PWAS uses the default **Iron Sight Aim Distance** instead. GitBook Assistant > **Note** Eye Point sockets are only required for iron sights. Optics control their default eye distance using the position of the `AimPoint_#` socket. > > GitBook Assistant ### Sight Priority[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming#sight-priority) The suffix number determines the order in which available sights are selected. Lower suffix numbers have higher priority and are selected first. GitBook Assistant For example: GitBook Assistant `AimPoint_1` → before `AimPoint_2` GitBook Assistant `IronSightRear_1 / IronSightFront_1` → before `IronSightRear_2 / IronSightFront_2` GitBook Assistant If an `AimPoint_#` and an iron-sight pair use the **same suffix number**, the `AimPoint_#` is prioritized. GitBook Assistant For example: GitBook Assistant `AimPoint_1` GitBook Assistant will be selected before: GitBook Assistant `IronSightRear_1 / IronSightFront_1` GitBook Assistant This allows a primary optic to keep the same priority number as a backup iron-sight pair while still being selected first. GitBook Assistant When changing sights, PWAS queues the selected sight and applies it when entering ADS. GitBook Assistant > **Important** The Rear and Front socket suffixes must match. `IronSightRear_2` will only pair with `IronSightFront_2`. > > GitBook Assistant > **Recommended** Use unique suffix numbers whenever possible. Reusing the same suffix is supported, but unique numbers make the sight order easier to understand and manage. > > GitBook Assistant ![](https://dannyboy730.gitbook.io/pwas-v2-documentation/~gitbook/image?url=https%3A%2F%2F3634151805-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FyGcMr5qPaF0NuFsh2lwR%252Fuploads%252FoCY9o4hZvnnbzemBhB6w%252F4.png%3Falt%3Dmedia%26token%3De900f9e5-6832-42e3-a6c5-25f10b297808&width=768&dpr=3&quality=100&sign=d120b58c220d678581fd44cc16db50b2&sv=3) ![](https://dannyboy730.gitbook.io/pwas-v2-documentation/~gitbook/image?url=https%3A%2F%2F3634151805-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FyGcMr5qPaF0NuFsh2lwR%252Fuploads%252FwsszHzkQXCMFWdSLPViZ%252F5.png%3Falt%3Dmedia%26token%3De32a280b-6b20-455f-92b2-b18df84fe821&width=768&dpr=3&quality=100&sign=ea21e53a2b838081e7cbf113f59d4f85&sv=3) ![](https://dannyboy730.gitbook.io/pwas-v2-documentation/~gitbook/image?url=https%3A%2F%2F3634151805-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FyGcMr5qPaF0NuFsh2lwR%252Fuploads%252FwmIHpkhOP5qZ2HArZB0a%252F6.png%3Falt%3Dmedia%26token%3D1ba86e2f-322a-466b-94c8-1f508518421a&width=768&dpr=3&quality=100&sign=70b48bdd3973639930717e269a7daf28&sv=3) [PreviousSkeleton & Animation Setup](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup) [NextWeapon Parts & Attachments](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments) Last updated 18 days ago Was this helpful? --- # Demo Project | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/demo-project.md) . The included demo project shows one complete example of how PWAS V2 can be integrated into a playable weapon system. GitBook Assistant Most of the demo framework is **optional** and can be modified, replaced, or removed depending on your project. GitBook Assistant ### What the Demo Includes[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/demo-project#what-the-demo-includes) The demo provides example implementations for: GitBook Assistant * Weapon spawning and switching GitBook Assistant * Firing and ammunition GitBook Assistant * Fire modes GitBook Assistant * Reloading and rechambering GitBook Assistant * Modular Weapon Parts and Attachments GitBook Assistant * Optics and iron sights GitBook Assistant * First-person and third-person weapon handling GitBook Assistant * Third-person proxy weapons GitBook Assistant * Multiplayer replication GitBook Assistant * Left Hand IK and foregrips GitBook Assistant * Example HUD / gameplay functionality GitBook Assistant These systems are included to demonstrate how PWAS can be used in a complete project. GitBook Assistant > **Important** PWAS itself does not require the demo firing, inventory, ammo, replication, proxy weapon, or other gameplay systems. > > GitBook Assistant ### Recommended Use[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/demo-project#recommended-use) If you are starting a new project, the demo character and `BP_WeaponMaster` provide the quickest starting point. GitBook Assistant You can build on these Blueprints and remove any functionality you do not need. GitBook Assistant If your project already has its own weapon framework, use the demo primarily as a reference for: GitBook Assistant * PWAS function calls GitBook Assistant * Weapon Preset setup GitBook Assistant * Attachment integration GitBook Assistant * Procedural aiming GitBook Assistant * Animation / IK implementation GitBook Assistant ### Multiplayer[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/demo-project#multiplayer) The demo includes an example multiplayer setup using separate first-person and third-person weapon handling. GitBook Assistant The third-person proxy weapon and replication logic are **example implementations**, not required PWAS systems. GitBook Assistant Projects with an existing multiplayer framework can implement replication differently while keeping the local PWAS procedural systems. GitBook Assistant ### Modifying the Demo[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/demo-project#modifying-the-demo) The demo is intended to be modified. GitBook Assistant You can replace or rewrite systems such as: GitBook Assistant * Weapon spawning GitBook Assistant * Inventory GitBook Assistant * Firing GitBook Assistant * Reload logic GitBook Assistant * HUD GitBook Assistant * Replication GitBook Assistant * Third-person handling GitBook Assistant as long as the necessary PWAS references and function calls remain connected. GitBook Assistant > **Tip** Keep an unchanged copy of the demo project or original Blueprints as a reference while modifying the included systems. > > GitBook Assistant [PreviousWeapon Parts & Attachments](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments) [NextTroubleshooting](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting) Last updated 19 days ago Was this helpful? --- # PWAS V2.0 | Changelog | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026/pwas-v2.0.md) . Added[](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026/pwas-v2.0#added) * New socket-based procedural aiming system. GitBook Assistant * Automatic optic detection using `AimPoint_#`. GitBook Assistant * Procedural iron-sight alignment using paired: GitBook Assistant * `MainIronSightRear_#` / `MainIronSightFront_#` GitBook Assistant * `IronSightRear_#` / `IronSightFront_#` GitBook Assistant * Optional `IronSightEyePoint_#` and `MainIronSightEyePoint_#` support for controlling iron-sight eye distance. GitBook Assistant * `Attachment Aim Distance Offset` for adjusting the aiming distance of attachment-based sights per weapon. GitBook Assistant * Support for straight and canted iron sights. GitBook Assistant * Multiple selectable sights and queued sight switching. GitBook Assistant * Modular Weapon Part Data Assets. GitBook Assistant * Modular Attachment Data Assets. GitBook Assistant * Attachment stat modifiers. GitBook Assistant * Attachment parent priority using `Mesh Parent Names`. GitBook Assistant * Support for stat-only/no-mesh attachments. GitBook Assistant * Attachment Tags for functionality and attachment parenting. GitBook Assistant * Foregrip / Left Hand IK attachment support. GitBook Assistant * Attachment-based ammo capacity overrides. GitBook Assistant * Base iron-sight overriding for optics and replacement sights. GitBook Assistant * Third-person weapon setup. GitBook Assistant * Third-person procedural aiming and recoil examples. GitBook Assistant * Multiplayer and proxy weapon examples. GitBook Assistant * Sliding procedural animations. GitBook Assistant * Freelook support. GitBook Assistant * Hold-breath functionality. GitBook Assistant * Additional ADS stages and procedural customization. GitBook Assistant * `ReloadAimAlpha` animation curve for reducing third-person procedural aim pitch during reloads. GitBook Assistant Improved[](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026/pwas-v2.0#improved) * Reworked procedural aiming for more reliable optic alignment. GitBook Assistant * Iron sights now calculate alignment from physical rear and front sight positions rather than requiring a manually placed Aim Point. GitBook Assistant * Improved Left Hand IK behavior during reloads and attachment changes. GitBook Assistant * Improved hand IK stability by using bone-space grip targets. GitBook Assistant * Improved third-person hand IK and weapon handling. GitBook Assistant * Improved attachment discovery to support attachments nested under modular Weapon Parts. GitBook Assistant * Improved attachment-parent selection with ordered fallback priorities. GitBook Assistant * Improved runtime attachment spawning and initialization. GitBook Assistant * Improved procedural run/movement calculations. GitBook Assistant * Improved multiplayer demo behavior and proxy weapon handling. GitBook Assistant * Improved sight discovery across weapon meshes, Weapon Parts, and Attachments. GitBook Assistant PWAS V2 is a major update that expands the original procedural animation system and introduces a redesigned aiming system, modular weapon examples, attachments, third-person support, multiplayer examples, and extensive improvements to the core procedural systems. GitBook Assistant ### Animation Changes[](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026/pwas-v2.0#animation-changes) PWAS V2 introduces additional animation setup used by the new aiming and IK systems. GitBook Assistant New/updated curves include: GitBook Assistant * `LeftGripAlpha` GitBook Assistant * `RightGripAlpha` GitBook Assistant * `AimLockLoc` GitBook Assistant * `AimLockRot` GitBook Assistant * `ReloadRunAlpha` GitBook Assistant * `ReloadAimAlpha` GitBook Assistant These curves use inverted values: GitBook Assistant `0` = Fully locked / enabled `1` = Released / animation controlled GitBook Assistant The procedural aiming setup also uses: GitBook Assistant * `VB ik_hand_gun_parent` GitBook Assistant * `VB ik_hand_gun_ads` GitBook Assistant See **Skeleton & Animation Setup** for details. GitBook Assistant ### Important Changes from V1[](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026/pwas-v2.0#important-changes-from-v1) PWAS V2 changes several parts of the original setup. GitBook Assistant * Manual Aim Location / Rotation values are no longer the primary method for aligning sights. GitBook Assistant * Aim alignment is now primarily socket-based. GitBook Assistant * The old `Set Bone Transform To 0` setup before the Base Adjuster is no longer required. GitBook Assistant * The authored animation pose is now used as the baseline for procedural animation. GitBook Assistant * Aim Location / Rotation offsets are used differently in V2. GitBook Assistant * Weapon and attachment setup has been expanded considerably. GitBook Assistant > **Important** PWAS V2 should be treated as a major update rather than a drop-in replacement for every customized V1 implementation. If you have heavily modified PWAS V1, compare your changes with the included V2 demo before replacing existing systems. > > GitBook Assistant [PreviousChangelog](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog) Last updated 17 days ago Was this helpful? --- # Troubleshooting | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting.md) . If something is not working as expected, comparing your setup with one of the included demo weapons is often the quickest way to find the difference. GitBook Assistant #### Weapon Does Not Use the Expected Procedural Settings[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#weapon-does-not-use-the-expected-procedural-settings) **Check:** GitBook Assistant * The correct `Weapon Preset` is assigned. GitBook Assistant * The weapon is providing the correct reference to PWAS. GitBook Assistant * Weapon Part / Attachment modifiers are not unintentionally changing the preset values. GitBook Assistant Remember that equipped Weapon Parts and Attachments can modify the base Weapon Preset. GitBook Assistant * * * #### Attachment Attaches to the Wrong Component[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#attachment-attaches-to-the-wrong-component) Check the attachment's `Mesh Parent Names`. GitBook Assistant This array is a priority list. PWAS uses the **first valid parent it finds**. GitBook Assistant For example: GitBook Assistant GitBook AssistantAskCopy RailHandguardBody If `Body` is placed first, PWAS may select the receiver before checking more specific components. GitBook Assistant > **Fix:** Put the preferred/specific parent first and use `Body` as a fallback where appropriate. > > GitBook Assistant Also make sure the target component contains a corresponding Component/Attachment Tag. GitBook Assistant * * * #### Attachment Falls Back to the Weapon Root[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#attachment-falls-back-to-the-weapon-root) PWAS could not find a valid component matching any entry in `Mesh Parent Names`. GitBook Assistant Check that: GitBook Assistant * The desired parent contains the correct tag. GitBook Assistant * The spelling matches exactly. GitBook Assistant * The required Weapon Part has spawned. GitBook Assistant * `Mesh Parent Names` contains the intended fallback. GitBook Assistant * * * #### Stat-Only / No-Mesh Attachment Does Not Apply Stats[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#stat-only-no-mesh-attachment-does-not-apply-stats) Even when an Attachment or Weapon Part has no mesh, it still requires a valid `Mesh Parent Names` entry. GitBook Assistant For most stat-only entries, use: GitBook Assistant GitBook AssistantAskCopy Body `Attach Socket Name` is not required when no mesh is assigned. GitBook Assistant * * * #### Optic Is Not Detected[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#optic-is-not-detected) Make sure the optic contains a socket named: GitBook Assistant GitBook AssistantAskCopy AimPoint_# For example: GitBook Assistant GitBook AssistantAskCopy AimPoint_1 The number determines its priority in the available sight list. GitBook Assistant Also confirm that the socket is on the mesh PWAS is detecting. GitBook Assistant * * * #### Iron Sights Do Not Align[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#iron-sights-do-not-align) Check that the Rear and Front socket suffixes match: GitBook Assistant GitBook AssistantAskCopy IronSightRear_1 IronSightFront_1 or for base sights: GitBook Assistant GitBook AssistantAskCopy MainIronSightRear_1 MainIronSightFront_1 The Rear and Front sockets should be positioned at the **actual physical sight centers**. Do not move the Rear socket backward to control camera distance. GitBook Assistant Use `IronSightEyePoint_#`, `MainIronSightEyePoint_#`, or the default Iron Sight Aim Distance to control eye distance instead. GitBook Assistant * * * #### "No Matching IronSightFront" Warning[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#no-matching-ironsightfront-warning) PWAS found a Rear sight but could not find a matching Front sight. GitBook Assistant Check: GitBook Assistant * Rear and Front use the same suffix. GitBook Assistant * Both meshes are currently attached/spawned. GitBook Assistant * The Front socket name is correct. GitBook Assistant For example: GitBook Assistant GitBook AssistantAskCopy IronSightRear_3 IronSightFront_3 When multiple separate Rear/Front meshes reuse the same suffix, make sure the corresponding meshes are added/spawned in matching order. GitBook Assistant Using unique suffixes where possible is recommended. GitBook Assistant * * * #### Base Iron Sights Disappear When an Optic Is Equipped[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#base-iron-sights-disappear-when-an-optic-is-equipped) Check whether the optic has `Override Base Iron Sight` enabled. GitBook Assistant When enabled, sights using: GitBook Assistant GitBook AssistantAskCopy MainIronSightRear_# MainIronSightFront_# are intentionally removed from the available sight list. GitBook Assistant Additional sights using `IronSightRear_#` / `IronSightFront_#` remain available. GitBook Assistant * * * #### Iron Sight Camera Is Too Close or Too Far Away[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#iron-sight-camera-is-too-close-or-too-far-away) Add an optional Eye Point socket to the Rear sight mesh. GitBook Assistant For normal/additional sights, use: GitBook Assistant `IronSightEyePoint_#` GitBook Assistant For main/base sights, use: GitBook Assistant `MainIronSightEyePoint_#` GitBook Assistant The suffix should match the corresponding Rear/Front sight pair. GitBook Assistant PWAS uses the Eye Point to determine the desired aiming distance. If no Eye Point exists, PWAS uses the default **Iron Sight Aim Distance**. GitBook Assistant * * * #### Hand Does Not Release During Reload / Rechamber[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#hand-does-not-release-during-reload-rechamber) Check the animation's grip curves: GitBook Assistant * `LeftGripAlpha` GitBook Assistant * `RightGripAlpha` GitBook Assistant PWAS uses inverted curve values: GitBook Assistant GitBook AssistantAskCopy 0 = Fully locked 1 = Fully released Raise the appropriate curve when the hand should follow the animation instead of its IK target. GitBook Assistant * * * #### Iron-Sight ADS Looks Too Static During Animations[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#iron-sight-a-ds-looks-too-static-during-animations) Use: GitBook Assistant * `AimLockLoc` GitBook Assistant * `AimLockRot` GitBook Assistant to allow some animation influence while aiming. GitBook Assistant These curves are also inverted: GitBook Assistant GitBook AssistantAskCopy 0 = Fully locked1 = Released toward the animation Location usually requires a much smaller amount of movement than rotation. GitBook Assistant * * * #### Foregrip Uses the Wrong Left-Hand Position[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#foregrip-uses-the-wrong-left-hand-position) Foregrips override the default `LeftHandIK` provided by a Weapon Part such as the handguard. GitBook Assistant Check that: GitBook Assistant * The appropriate attachment contains the required `LeftHandIK` setup. GitBook Assistant * The default handguard/part has the expected `LeftHandIK` tag. GitBook Assistant * The supporting-hand pose is suitable for the weapon. GitBook Assistant A single foregrip setup can work across multiple weapons, but significantly different weapon proportions may require different poses. GitBook Assistant * * * #### Attachments Under Weapon Parts Are Not Found[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#attachments-under-weapon-parts-are-not-found) If you have modified the included attachment/aim discovery logic, make sure attached actors are searched **recursively**. GitBook Assistant The included V2 setup supports attachments nested under Weapon Parts, for example: GitBook Assistant GitBook AssistantAskCopy Weapon └─ Handguard └─ Front Sight * * * #### Custom Character Aiming Does Not Work[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#custom-character-aiming-does-not-work) If you are using your own skeleton, confirm the required IK bones and PWAS Virtual Bones have been set up as described in **Skeleton & Animation Setup**. GitBook Assistant If you are using the included skeleton, these are already configured. GitBook Assistant * * * #### Still Having Problems?[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting#still-having-problems) Compare the affected setup with the closest included demo weapon. GitBook Assistant The demo weapons provide working examples for different weapon types, optics, iron sights, Weapon Parts, Attachments, and IK setups. GitBook Assistant [PreviousDemo Project](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/demo-project) Last updated 18 days ago Was this helpful? --- # Weapon Parts & Attachments | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments.md) . PWAS V2 includes optional systems for creating modular weapons using **Weapon Part** and **Attachment** Data Assets. GitBook Assistant These systems are included with the demo framework and are not required for PWAS itself. If your project already has its own attachment system, you can continue using it and pass the required stat changes to PWAS instead. GitBook Assistant ### Weapon Parts vs Attachments[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments#weapon-parts-vs-attachments) **Weapon Parts** are generally used for structural parts of the weapon, such as: GitBook Assistant * Barrels GitBook Assistant * Handguards GitBook Assistant * Stocks GitBook Assistant * Pistol grips GitBook Assistant * Other replaceable weapon components GitBook Assistant **Attachments** are generally used for equipment added to the weapon, such as: GitBook Assistant * Optics GitBook Assistant * Iron sights GitBook Assistant * Foregrips GitBook Assistant * Suppressors GitBook Assistant * Flashlights / Lasers GitBook Assistant * Magazines or magazine tubes GitBook Assistant Both can provide stat modifiers to PWAS. GitBook Assistant ### Mesh Parent Names[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments#mesh-parent-names) `Mesh Parent Names` determines which weapon component the part or attachment should attach to. GitBook Assistant The array is a **priority list**. PWAS searches for each name in order and uses the first valid parent it finds. GitBook Assistant For example: GitBook Assistant GitBook AssistantAskCopy Rail Handguard Body PWAS will: GitBook Assistant 1. Look for a component tagged `Rail`. GitBook Assistant 2. If none exists, look for `Handguard`. GitBook Assistant 3. If neither exists, fall back to `Body`. GitBook Assistant > **Important** Put the most specific/preferred parent first. `Body` should usually be last when it is only intended as a fallback. > > GitBook Assistant This search also includes modular Weapon Parts, so an attachment can be attached to a Handguard, Barrel, Rail, or another supported part rather than directly to the main weapon mesh. GitBook Assistant **Important — Attachment Spawn Order** GitBook Assistant When an Attachment uses another Attachment as its parent, the parent Attachment must appear **earlier in the Weapon Attachments array**. GitBook Assistant Attachments are processed in array order, so the parent must already be spawned before PWAS can find it using `Mesh Parent Names`. GitBook Assistant For example: GitBook Assistant 1. `Canted Rail` GitBook Assistant 2. `Canted Red Dot` GitBook Assistant If the Canted Red Dot uses `CantedRail` in its `Mesh Parent Names`, the Canted Rail must be placed before the Red Dot in the Attachment array. GitBook Assistant This ordering is only important for **Attachment → Attachment** parenting. Weapon Parts are spawned before Attachments, so Attachments that parent directly to a Weapon Part do not require special Attachment ordering. GitBook Assistant #### Common Examples[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments#common-examples) **Foregrip** GitBook Assistant GitBook AssistantAskCopy Handguard Body **Rail-mounted attachment** GitBook Assistant GitBook AssistantAskCopy Rail Handguard Body **Attachment that should always use the receiver** GitBook Assistant GitBook AssistantAskCopy Body ### Attach Socket Name[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments#attach-socket-name) `Attach Socket Name` determines which socket on the selected parent the mesh attaches to. GitBook Assistant For example: GitBook Assistant GitBook AssistantAskCopy Mesh Parent Names: Handguard Body Attach Socket Name:Foregrip PWAS first finds the preferred parent and then attaches the mesh to the specified socket. GitBook Assistant ### Stat-Only / No-Mesh Entries[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments#stat-only-no-mesh-entries) A Weapon Part or Attachment does not need to contain a mesh. GitBook Assistant This can be useful for stat-only configurations such as a **No Stock** option or other modifiers that do not require a visible model. GitBook Assistant > **Important** Even when no mesh is assigned, `Mesh Parent Names` must still contain a valid parent name or the entry's stats will not be applied. > > GitBook Assistant Since PWAS demo weapons use the `Body` component tag, stat-only entries can normally use: GitBook Assistant GitBook AssistantAskCopy Mesh Parent Names: Body `Attach Socket Name` is not required when no mesh is used. GitBook Assistant ### Attachment Tags[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments#attachment-tags) `Attachment Tags` can provide additional functionality or allow a Weapon Part/Attachment to act as a parent for other attachments. GitBook Assistant For example, a rifle handguard may use: GitBook Assistant * `LeftHandIK` — tells PWAS that the part can be used as the default left-hand support point. GitBook Assistant * `Handguard` — allows other attachments to find this part by adding `Handguard` to their `Mesh Parent Names`. GitBook Assistant Foregrips override the default `LeftHandIK` part when equipped. GitBook Assistant > **Important** Attachment Tags are not only descriptive. Some tags affect PWAS functionality, while others allow the part to be found by the attachment system. > > GitBook Assistant > > **Note** Attachments do not have to be configured through an Attachment Data Asset. > > GitBook Assistant > > If an Attachment is created as a child of `BP_AttachmentBase`, the required tags can instead be added manually to the Attachment mesh's **Component Tags**. > > GitBook Assistant > > Attachment Tags defined in an Attachment Data Asset are automatically applied as Component Tags when the Attachment is spawned. Adding the same Component Tags manually allows child `BP_AttachmentBase` Blueprints to use the corresponding functionality without requiring the tag to come from the Data Asset. > > GitBook Assistant > > This does **not** apply to a standalone Static Mesh Component. Functionality implemented by `BP_AttachmentBase`, such as the included parallax optic system, requires the Attachment to use `BP_AttachmentBase` or a child Blueprint of it. > > GitBook Assistant * * * ### Muzzle Collision[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments#muzzle-collision) PWAS uses a socket named `MuzzleCollision` to determine the effective end of the weapon for procedural wall collision. GitBook Assistant By default, the socket can be placed on the weapon itself. If a barrel, suppressor, or other part extends farther forward, that part or attachment can override the collision source. GitBook Assistant To use an attachment or weapon part as the collision source: GitBook Assistant * Add the Attachment/Component Tag `MuzzleCollision`. GitBook Assistant * Add a socket named `MuzzleCollision` to the corresponding mesh. GitBook Assistant * PWAS will use the valid tagged part/attachment as the wall-collision reference. GitBook Assistant Wall collision uses sphere traces to detect nearby geometry and calculate how obstructed the weapon is. Light obstruction first pushes the weapon backward before progressively blending into the configured collision location and rotation as the obstruction becomes stronger. GitBook Assistant This helps prevent the weapon from immediately entering the full collision pose when only the end of the barrel touches a surface. GitBook Assistant **Collision Trace Offset** GitBook Assistant `Collision Trace Offset` adjusts the stable wall-collision trace relative to the camera. GitBook Assistant The offset is applied in **camera-local space**: GitBook Assistant * **X:** Forward / Back GitBook Assistant * **Y:** Right / Left GitBook Assistant * **Z:** Up / Down GitBook Assistant This is useful because first-person weapons and hands are normally positioned below and slightly to the side of the camera rather than directly through the center of the screen. GitBook Assistant Adjust this value so the collision trace approximately follows the space occupied by the weapon and hands. GitBook Assistant Crouching automatically applies the configured crouch positional adjustment to the trace. GitBook Assistant **Freelook** GitBook Assistant Wall collision uses the saved base camera rotation rather than temporary camera rotation caused by Freelook. This keeps the collision trace aligned with the weapon while the player looks around independently. GitBook Assistant `Update Camera Transform` should therefore only be called when the camera's intended **base relative transform** changes. It should not be called every Tick or during temporary effects such as Freelook or camera recoil. GitBook Assistant > **Notes** > > GitBook Assistant > > Wall collision is a procedural approximation rather than full physical collision for the weapon and arms. Extreme angles may still produce minor clipping depending on weapon shape, animation pose, and trace settings. > > GitBook Assistant > > The included third-person example also contains procedural wall collision. Third-person collision is calculated locally as a visual procedural effect and uses a simplified weapon-based collision trace. > > GitBook Assistant * * * ### Stat Modifiers[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments#stat-modifiers) Weapon Parts and Attachments can modify PWAS stats without changing the original Weapon Preset. GitBook Assistant For example: GitBook Assistant * Stock → recoil changes GitBook Assistant * Foregrip → recoil / handling changes GitBook Assistant * Barrel → weapon-specific changes GitBook Assistant * Optic → ADS-related changes GitBook Assistant The exact modifiers are configured inside the respective Data Asset. GitBook Assistant The Weapon Preset remains the weapon's baseline configuration, while equipped parts and attachments apply their modifiers on top of it. GitBook Assistant * * * ### Magazines & Ammo Capacity[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments#magazines-and-ammo-capacity) Magazines, shotgun magazine tubes, belt boxes, and similar feed systems can be configured as Attachments. GitBook Assistant The attachment's ammo capacity value overrides the weapon's default maximum capacity. GitBook Assistant For example: GitBook Assistant * Short Magazine → 20 GitBook Assistant * Standard Magazine → 30 GitBook Assistant * Drum Magazine → 60 GitBook Assistant > **Note** The included Attachment system currently supports Static Meshes only. Skeletal Mesh attachments require modifications to the demo attachment system. > > GitBook Assistant > > For weapons that use a Skeletal Mesh magazine or belt system, such as some LMGs, the Attachment can still be used for ammo-capacity/stat overrides while the visual magazine is handled separately by the weapon Blueprint. > > GitBook Assistant Magazine Attachments can also optionally define an **Empty Magazine Mesh** for use with the included demo weapon system. When a Magazine Attachment is equipped, the demo automatically updates its normal and empty magazine mesh references. GitBook Assistant The demo also calls `OnMagazineMeshUpdated` when the magazine mesh changes. Child weapon Blueprints can use this event to update additional magazine components, such as a spare magazine used during tactical reload animations. GitBook Assistant This functionality is optional, is not required by PWAS, and can be ignored if your project handles magazine visuals differently. GitBook Assistant **Note:** Magazines with significantly different dimensions may require matching reload animations so the hand correctly interacts with the magazine. The included magazine Attachment system handles mesh and ammo-capacity changes, but weapon-specific reload animation selection should be handled by the weapon framework. GitBook Assistant * * * ### Sight Attachment[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments#sight-attachment) Optics and iron sights can be added through the normal Attachment system. GitBook Assistant Sight attachments can enable `Override Base Iron Sight`. When enabled, PWAS ignores: GitBook Assistant `MainIronSightRear_#` `MainIronSightFront_#` GitBook Assistant Additional sights using: GitBook Assistant `IronSightRear_#` `IronSightFront_#` GitBook Assistant remain available. This allows configurations such as a primary optic with canted iron sights. GitBook Assistant See **Procedural Aiming** for the complete socket naming rules. GitBook Assistant * * * ### Foregrips[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments#foregrips) Foregrips can provide the Left Hand IK target used by PWAS. GitBook Assistant The same foregrip can be used across multiple weapons, although weapons with significantly different proportions may require a different supporting-hand pose for the best result. GitBook Assistant [PreviousProcedural Aiming](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming) [NextDemo Project](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/demo-project) Last updated 15 days ago Was this helpful? --- # Unknown \# PWAS V2 Documentation ## Documentation - \[Introduction\](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/introduction.md) - \[Quickstart\](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart.md): Get your first PWAS V2 weapon running using the included demo framework. - \[Recommended Workflow\](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow.md) - \[Weapon Setup\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup.md) - \[Procedural Editor\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor.md): The Procedural Editor provides an easier way to configure and test the procedural settings stored inside a Weapon Preset. - \[PWAS Integration\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration.md) - \[Skeleton & Animation Setup\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup.md) - \[Procedural Aiming\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming.md) - \[Weapon Parts & Attachments\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments.md): Set up modular weapon parts, attachments, parent priorities, tags, and stat modifiers. - \[Demo Project\](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/demo-project.md) - \[Troubleshooting\](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting.md): This page covers common setup issues when using PWAS V2. ## Changelog - \[Changelog\](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/readme.md): New updates and improvements - \[PWAS V2.0\](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026/pwas-v2.0.md) --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on a page URL with the \`ask\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/introduction.md?ask= \`\`\` The question should be specific, self-contained, and written in natural language. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/readme.md). # Changelog New updates and improvements {% updates format="full" %} {% update date="2026-08-30" tags="feature,improvement,fix" %} ## PWAS V2.0 PWAS has finally received a massive update.
PWAS V2 is a major update that expands the original procedural animation system and introduces a redesigned aiming system, modular weapon examples, attachments, third-person support, multiplayer examples, and extensive improvements to the core procedural systems. Read full updateDocumentation {% endupdate %} {% endupdates %} --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/readme.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Unknown Changelog | PWAS V2 Documentation https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog New updates and improvements Mon, 24 Aug 2026 01:20:41 GMT https://dannyboy730.gitbook.io/pwas-v2-documentation https://github.com/jpmonette/feed Copyright 2026 <!\[CDATA\[PWAS V2.0\]\]> https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog#pwas-v2.0 https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog#pwas-v2.0 Sun, 30 Aug 2026 00:00:00 GMT --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/introduction.md). # Introduction \*\*Procedural Weapon Animation System (PWAS)\*\* is a Blueprint-based first-person weapon animation system for Unreal Engine. It provides procedural control over weapon movement and handling, including aiming, recoil, movement, sway, breathing, collision, running, jumping, and more. PWAS V2 also includes example systems for modular weapons, weapon parts, attachments, iron sights, optics, third-person weapons, and multiplayer replication. > \*\*Important\*\*\\ > The included demo project contains many systems that are \*\*not required for PWAS to work\*\*. Systems such as weapon firing, ammo, inventory, fire modes, third-person proxy weapons, and replication are provided as examples of how PWAS can be integrated into a complete weapon system. At its core, PWAS only requires your character/weapon system to provide the necessary references and call a small number of PWAS functions when actions such as aiming, firing, running, or changing weapon state occur. For the fastest setup, it is recommended to use or extend the included \*\*\`BP\_WeaponMaster\`\*\* and demo character. If you already have your own weapon and character systems, PWAS can instead be integrated directly into them. {% hint style="info" %} \*\*Recommended:\*\* Use \`BP\_WeaponMaster\` and the included demo character as your base unless you already have an existing weapon/character framework. {% endhint %} {% content-ref url="/pages/416edc1381c20849bc41111b02e482a722a49b94" %} \[Quickstart\](/pwas-v2-documentation/getting-started/quickstart.md) {% endcontent-ref %} {% content-ref url="/pages/c3101d8e098a6f696c75f6bda47d0ea5fdade1e5" %} \[Recommended Workflow\](/pwas-v2-documentation/getting-started/recommended-workflow.md) {% endcontent-ref %} --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/introduction.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Introduction | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/introduction.md) . **Procedural Weapon Animation System (PWAS)** is a Blueprint-based first-person weapon animation system for Unreal Engine. It provides procedural control over weapon movement and handling, including aiming, recoil, movement, sway, breathing, collision, running, jumping, and more. GitBook Assistant PWAS V2 also includes example systems for modular weapons, weapon parts, attachments, iron sights, optics, third-person weapons, and multiplayer replication. GitBook Assistant > **Important** The included demo project contains many systems that are **not required for PWAS to work**. Systems such as weapon firing, ammo, inventory, fire modes, third-person proxy weapons, and replication are provided as examples of how PWAS can be integrated into a complete weapon system. > > GitBook Assistant At its core, PWAS only requires your character/weapon system to provide the necessary references and call a small number of PWAS functions when actions such as aiming, firing, running, or changing weapon state occur. GitBook Assistant For the fastest setup, it is recommended to use or extend the included `**BP_WeaponMaster**` and demo character. If you already have your own weapon and character systems, PWAS can instead be integrated directly into them. GitBook Assistant **Recommended:** Use `BP_WeaponMaster` and the included demo character as your base unless you already have an existing weapon/character framework. GitBook Assistant [Quickstart](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart) [Recommended Workflow](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow) [NextQuickstart](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart) Last updated 19 days ago Was this helpful? --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup.md). # Skeleton & Animation Setup PWAS V2's included Animation Blueprint is set up for the \*\*UE5 Manny skeleton and IK bone structure\*\*. If you are using the included character/skeleton, this setup is already complete. This section is mainly required when replacing the character skeleton or adding your own animations. ### Character Mesh Tags \* \`FPMesh\` — add to the first-person/local player Skeletal Mesh component. \* \`TPMesh\` — add to the third-person/full-body Skeletal Mesh component. \* PWAS uses these tags to automatically locate the appropriate character mesh for FP/TP functionality, including hand IK calculations. ### Required IK Bones PWAS uses the standard IK bones: \* \`ik\_hand\_gun\` \* \`ik\_hand\_l\` \* \`ik\_hand\_r\` These are used for weapon positioning and hand IK. > \*\*Note\*\*\\ > If your character uses a different skeleton or different bone names, the included Animation Blueprint will need to be adapted. ### Required Virtual Bones The procedural aiming setup uses two Virtual Bones: \* \`VB ik\_hand\_gun\_parent\` \* \`VB ik\_hand\_gun\_ads\` These allow PWAS to calculate and apply procedural aiming without modifying the actual \`head\` bone. \*\*Create them as follows:\*\* 1. Right-click the \`head\` bone and add a Virtual Bone targeting \`head\`. 2. Rename it to \`VB ik\_hand\_gun\_parent\`. 3. Right-click \`VB ik\_hand\_gun\_parent\` and add another Virtual Bone targeting \`head\`. 4. Rename the new Virtual Bone to \`VB ik\_hand\_gun\_ads\`. The final hierarchy should look like: \`\`\` head└─ VB ik\_hand\_gun\_parent └─ VB ik\_hand\_gun\_ads \`\`\`
> \*\*Important\*\*\\ > These Virtual Bones are already included with the demo skeleton and do not need to be recreated unless you are setting up another skeleton. ### Animation Curves Custom weapon animations may require the following curves: | Curve | Purpose | | ---------------- | ---------------------------------------------------------------------------- | | \`LeftGripAlpha\` | Releases the left hand from PWAS hand IK | | \`RightGripAlpha\` | Releases the right hand from PWAS hand IK | | \`AimLockLoc\` | Allows animation influence over ADS location | | \`AimLockRot\` | Allows animation influence over ADS rotation | | \`ReloadRunAlpha\` | Disables the run pose | | \`ReloadAimAlpha\` | Reduces third-person/full-body procedural aim pitch during reload animations | #### Curve values are inverted These curves use an inverted value compared with a typical Alpha: \*\*\`0\` = Fully locked / enabled\*\*\\ \*\*\`1\` = Fully released / animation controlled\*\* For example, during a reload where the left hand leaves the weapon: \`\`\` LeftGripAlpha = 0 → hand remains locked to the grip LeftGripAlpha = 1 → hand follows the reload animation \`\`\` The same principle applies to \`RightGripAlpha\`, \`ReloadRunAlpha\`, \`ReloadAimAlpha\`, \`AimLockLoc\`, and \`AimLockRot\`.
### Aim Lock Curves \`AimLockLoc\` and \`AimLockRot\` are mainly used by the \*\*iron-sight aiming path\*\* to add some animation movement while maintaining procedural alignment. Location and rotation are separate because rotational movement can usually be much stronger without making the weapon feel disconnected from the camera. By default, optics use PWAS's alternate aiming path, which preserves more of the original animation movement automatically. > \*\*Optional\*\*\\ > If you prefer the tighter iron-sight aiming behavior for all sights, you can bypass the \`Blend Poses by Bool\` in the Procedural Aim section of the Animation Blueprint and use the iron-sight aiming path for optics as well. ### Reload Aim Alpha \`ReloadAimAlpha\` can be used by third-person/full-body reload animations to reduce the amount of procedural aim pitch applied while the reload is playing. Like the other PWAS animation curves, its values are inverted: \`0\` = Full procedural aim pitch\\ \`1\` = No procedural aim pitch Intermediate values partially reduce the procedural pitch. This is useful during sections of a reload where the hands, magazine, or other weapon parts need to remain aligned with the authored animation. At extreme up/down aiming angles, full procedural pitch can otherwise cause detached magazines or hand interactions to appear misaligned. For example, raise \`ReloadAimAlpha\` while the magazine is removed and lower it again as the reload returns to the normal weapon pose. > \*\*Note\*\*\\ > This curve is intended for the third-person/full-body procedural aiming setup and does not need to be used for first-person aiming. ### Using Your Own Animations When replacing the included reload, rechamber, inspect, or other weapon animations: \* Add the grip curves whenever a hand needs to leave its normal IK position. \* Add \`AimLockLoc\` / \`AimLockRot\` only when additional movement during procedural ADS is desired. \* Keep the curve at \`0\` wherever PWAS should retain full control. --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/skeleton-and-animation-setup.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart.md). # Quickstart Get your first PWAS V2 weapon running using the included demo framework. The fastest way to get started with PWAS V2 is to duplicate the included demo character (for backup) and the demo weapon closest to your own weapon type. This preserves the existing PWAS setup and lets you replace only what you need. ## Steps {% stepper %} {% step %} #### Create a Backup of the Demo Character Before making changes, duplicate the included demo character and keep the duplicate as a backup/reference. The demo character already contains the required PWAS references, input calls, weapon handling, and example integration. {% hint style="info" %} \*\*Character Mesh Tags\*\* PWAS uses Component Tags to automatically identify the character's first-person and third-person Skeletal Mesh components. \* Add \`FPMesh\` to the \*\*Component Tags\*\* of the first-person Skeletal Mesh. \* Add \`TPMesh\` to the \*\*Component Tags\*\* of the third-person or full-body Skeletal Mesh. These tags allow PWAS to automatically find the correct mesh for FP and TP functionality, including hand IK calculations. The included demo character already has these tags configured. If you are using the demo character as your base, no additional setup is required. {% endhint %} {% endstep %} {% step %} #### Duplicate a Similar Demo Weapon For example: \* Rifle → duplicate the included Rifle \* SMG → duplicate the SMG \* Shotgun → duplicate the Shotgun \* Pistol → duplicate the Pistol Replace the weapon assets and adjust its settings as needed. All demo weapons are already built on the included weapon framework, so this avoids recreating unnecessary setup. {% endstep %} {% step %} #### Add the Weapon to the Character Open the demo character and add your new weapon to the weapon array used to spawn the available weapons. Replace or remove the existing demo entries as needed. {% hint style="info" %} \*\*Note\*\*\\ The demo character spawns every weapon listed in the weapon array. If you only want a limited loadout, such as a Primary and Secondary weapon, the spawning logic will need to be adjusted. {% endhint %} {% endstep %} {% step %} #### Assign and Customize the Weapon Preset Duplicate the Weapon Preset from the demo weapon and assign the duplicate as your new \*\*Weapon Preset\*\*. Open the \*\*Weapon Preset\*\* tab to customize the weapon's procedural behavior, including recoil, sway, movement, ADS, breathing, collision, and other settings. For optics, iron sights, modular weapon parts, attachments, or custom animation setup, continue to the relevant setup pages. {% hint style="info" %} \*\*Note\*\*\\ Weapon Part and Attachment stat modifiers are configured in their Data Assets, not through the \*\*Procedural Editor\*\*. {% endhint %} {% endstep %} {% step %} ### Additional Setup Your basic PWAS weapon should now be working. Continue to the relevant pages if your weapon needs: \* Optics or iron sights \* Weapon parts and attachments \* Custom animation / IK setup \* A completely custom weapon or character framework {% endstep %} {% endstepper %} \*\*Using your own framework?\*\*\\ The included demo Blueprints are not required. PWAS can be integrated into an existing weapon or character system by providing the required references and PWAS function calls. See \*\*PWAS Integration\*\* for the required references and function calls, or \*\*Recommended Workflow\*\* for an overview of using PWAS with a custom framework. {% content-ref url="/pages/FaSGGOl6CSP0t71WWh7l" %} \[Weapon Setup\](/pwas-v2-documentation/setup/weapon-setup.md) {% endcontent-ref %} {% content-ref url="/pages/c3101d8e098a6f696c75f6bda47d0ea5fdade1e5" %} \[Recommended Workflow\](/pwas-v2-documentation/getting-started/recommended-workflow.md) {% endcontent-ref %} --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/quickstart.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor.md). # Procedural Editor The Procedural Editor provides an easier way to configure and test the procedural settings stored inside a Weapon Preset. Weapon Presets contain the main procedural configuration used by PWAS, including settings for: \* Recoil \* ADS / aiming \* Sway \* Movement \* Breathing \* Running \* Jumping \* Collision \* Other procedural animation settings The included demo weapons already contain configured Weapon Presets that can be used as starting points. ### Recommended Workflow When creating a new weapon, it is recommended to duplicate the Weapon Preset from the included demo weapon that most closely matches your weapon type. For example: \`DA\_Rifle\_Preset\` → duplicate for another rifle Assign the duplicated preset to your weapon before making changes. You can then use the \*\*Procedural Editor\*\* to adjust the weapon's procedural behavior. > \*\*Recommended\*\*\\ > Start from an existing demo preset rather than creating every value from scratch. This provides a working baseline that can then be adjusted for the new weapon. ### Editing the Weapon Preset Select the Weapon Preset you want to modify and use the available Procedural Editor categories to adjust its settings. Changes can be made to the different procedural systems independently, allowing each weapon to have its own behavior. For example, different Weapon Presets can be used to give a pistol, rifle, shotgun, or sniper different: \* Recoil behavior \* ADS movement \* Weapon sway \* Movement intensity \* Run position \* Aim distance \* Collision response \* Procedural animation speeds Once the weapon behaves as desired, save the configured Weapon Preset. ### Saving and Backing Up Presets After saving a Weapon Preset through the Procedural Editor, it is recommended to: 1. Save the Weapon Preset. 2. Use \*\*Save All\*\* in Unreal Engine. 3. Duplicate the saved Weapon Preset Data Asset and keep the duplicate as a backup. For example: \`DA\_Rifle\_Preset\` can be duplicated as: \`DA\_Rifle\_Preset\_Backup\` or: \`DA\_Rifle\_Preset\_Final\` > \*\*Important\*\*\\ > Keeping a duplicated copy of a finished preset is recommended. In some cases, changes made through the Procedural Editor may not persist correctly after restarting Unreal Engine. Keeping a backup helps prevent accidentally losing a completed procedural setup. You can continue editing the working preset while keeping the duplicated version unchanged as a backup. ### Weapon Presets and Attachments The Weapon Preset represents the weapon's \*\*base procedural configuration\*\*. Weapon Parts and Attachments can apply additional stat modifiers on top of the Weapon Preset when equipped. For example: \* A Stock can modify recoil. \* A Foregrip can modify recoil or handling. \* An Optic can modify ADS-related settings. \* Other Weapon Parts can apply their own procedural modifiers. > \*\*Note\*\*\\ > Weapon Part and Attachment stat modifiers are configured inside their respective Data Assets. They are not edited through the Procedural Editor. This allows a weapon to keep one base Weapon Preset while equipped parts dynamically modify the relevant settings. ### Using Multiple Weapon Presets Each weapon can use its own Weapon Preset. When changing weapons, the current Weapon Preset should be provided to PWAS using: \`Update Stats\` The included demo framework already handles this when switching weapons. If you are integrating PWAS into your own weapon system, make sure \`Update Stats\` is called whenever the active weapon and its Weapon Preset change. See \*\*PWAS Integration\*\* for more information about updating PWAS when equipping weapons. --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow.md). # Recommended Workflow PWAS V2 can either be used with the included demo framework or integrated into your own existing weapon and character systems. For most users, it is recommended to use the included demo framework as a starting point. #### Recommended: Modify the Included Demo The fastest workflow is to build on the included \*\*demo character\*\* and \*\*\`BP\_WeaponMaster\`\*\*. These already contain the references and example logic required to communicate with PWAS, including aiming, firing, running, weapon switching, attachments, and other supported actions. You can remove or replace any demo functionality that your project does not need. > \*\*Important\*\*\\ > Systems such as weapon firing, ammo, inventory, fire modes, third-person proxy weapons, and replication are example implementations. They are not required by PWAS itself. #### Using Your Own Framework If your project already has a weapon or character system, you do not need to replace it with the included demo Blueprints. Instead, integrate PWAS into your existing framework by: 1. Adding the required PWAS component and references. 2. Assigning the current Weapon Preset and weapon data. 3. Calling the appropriate PWAS functions when actions occur, such as aiming, firing, running, or changing weapon state. The exact implementation can differ between projects. The included demo Blueprints can be used as a reference for how these calls are handled. #### Which Should You Choose? \*\*Use the demo framework if:\*\* \* You are starting a new project. \* You want the fastest setup. \* You want the included modular weapon, attachment, third-person, or multiplayer examples. \*\*Use your own framework if:\*\* \* You already have a working weapon system. \* You only want PWAS for procedural animation. \* You prefer to handle firing, inventory, replication, or weapon logic yourself. {% content-ref url="/pages/a1pyMdszIB9vafFBjmPp" %} \[PWAS Integration\](/pwas-v2-documentation/setup/pwas-integration.md) {% endcontent-ref %} --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup.md). # Weapon Setup The easiest way to create a new weapon is to duplicate the included demo weapon that most closely matches your weapon type and replace its assets. For example, use the included Rifle as a base for another rifle, the SMG for another SMG, and so on. ### 1. Replace the Weapon Mesh Replace the existing weapon mesh with your own. The main weapon mesh/component should have the component tag: \`Body\` \`Body\` is used by several included systems as the default weapon component and as a fallback parent for parts and attachments. \`LeftHandIK\` \`LeftHandIK\` Tells PWAS that the weapon or part provides a Left Hand IK point. A corresponding \`LeftHandIK\` socket is also required on the relevant weapon mesh, Weapon Part, or Attachment. \`RightHandIK\` \`RightHandIK\` Works the same way for the right hand and uses the corresponding \`RightHandIK\` setup. > \*\*Important\*\*\\ > It is recommended to keep the \`Body\` tag even if your weapon uses modular Weapon Parts. ### 2. Assign a Weapon Preset Duplicate the Weapon Preset used by the demo weapon and assign the duplicate to \*\*Weapon Preset\*\*. The Weapon Preset contains the procedural settings used by PWAS, including: \* Recoil \* ADS \* Sway \* Movement \* Breathing \* Running \* Jumping \* Collision \* Other procedural settings Open the \*\*Weapon Preset\*\* tab to customize these values. See \*\*Procedural Editor\*\* for information about editing, saving, and backing up Weapon Presets. {% content-ref url="/pages/xsRSyDX3f0DDCMxwUqKx" %} \[Procedural Editor\](/pwas-v2-documentation/setup/procedural-editor.md) {% endcontent-ref %} > \*\*Note\*\*\\ > Weapon Part and Attachment stat modifiers are configured in their Data Assets and are not edited through the Procedural Editor. ### 3. Replace Weapon-Specific Assets Replace any other assets needed by your weapon, such as: \* Animations \* Magazines \* Sounds \* Casings \* Muzzle effects \* Weapon Parts or Attachments Most of these belong to the included demo weapon framework and are \*\*not required for PWAS itself\*\*. ### What PWAS Actually Uses From \`BP\_WeaponMaster\`, the main data PWAS cares about is: \* \*\*Weapon Preset\*\* \* Procedural stat modifiers provided by \*\*Weapon Parts\*\* \* Procedural stat modifiers provided by \*\*Weapon Attachments\*\* Variables such as ammo, fire rate, fire modes, bullet class, reload logic, and similar weapon gameplay settings are part of the included demo framework and can be replaced with your own systems. ### Using Your Own Weapon Blueprint You do not need to use \`BP\_WeaponMaster\`. If your project already has a weapon framework, keep your existing weapon Blueprint and provide PWAS with the required weapon preset/references and function calls. The included \`BP\_WeaponMaster\` can be used as a reference for the integration. {% content-ref url="/pages/fb922e107b31a3e9e9fcf81410029e993b0a9afc" %} \[Procedural Aiming\](/pwas-v2-documentation/setup/procedural-aiming.md) {% endcontent-ref %} {% content-ref url="/pages/TdEiIN32Dp3IJImg80UF" %} \[Weapon Parts & Attachments\](/pwas-v2-documentation/setup/weapon-parts-and-attachments.md) {% endcontent-ref %} --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration.md). # PWAS Integration PWAS does not control your character's gameplay logic directly. Instead, your character or weapon system informs PWAS when relevant gameplay states change, such as aiming, firing, running, crouching, or equipping a new weapon. The included demo character already contains these calls. This section is mainly required if you are integrating PWAS into your own character or weapon framework. > \*\*Important\*\*\\ > Your implementation does not need to match the demo Blueprints exactly. PWAS only needs to receive the appropriate references and function calls when the corresponding gameplay events occur. ### 1. Initialize PWAS PWAS should first be initialized using \`Init Player\`. Provide: \* \*\*Camera\*\* — the Camera Component used by the local player. \* \*\*Player\*\* — the player Character/Pawn. \* \*\*Weapon\*\* — the current weapon Actor, if one already exists. \* \*\*Update HUD\*\* — only required if using the included HUD functionality. The \*\*Weapon\*\* input can be left empty if your weapons are spawned or equipped after PWAS is initialized. The weapon reference can be supplied later using \`Update Weapon Ref\`. In the included demo, PWAS is initialized for the locally controlled player. ### \*\*Update Camera Transform\*\* \`Init Player\` automatically stores the Camera's current relative location and rotation for use by the procedural aiming system. PWAS uses this stored transform as the Camera's \*\*base reference transform\*\* rather than continuously reading the Camera Component every frame. This prevents temporary Camera movement, such as camera recoil, from affecting procedural weapon alignment. If the Camera's base relative transform changes during gameplay, call \`Update Camera Transform\` after the change. For example, this may be required when: \* Changing the Camera's relative location or rotation. \* Switching between different first-person Camera setups. \* Dynamically changing the player's base Camera position. > \*\*Important\*\*\\ > Do not call \`Update Camera Transform\` every Tick or while applying temporary Camera effects such as recoil. The function is intended to update the Camera's base/reference transform only. \`Update Camera Transform\` is already called automatically by \`Init Player\`, so no additional call is required during normal initialization. ### 2. Updating PWAS When Equipping a Weapon When a new weapon is equipped, PWAS needs to know which Weapon Preset and weapon Actor it should use. The included demo updates these in the following order: #### Update Stats Call \`Update Stats\` and provide the new weapon's \*\*Weapon Preset\*\*. This updates PWAS with the procedural settings for the currently equipped weapon. These include settings such as: \* Recoil \* ADS \* Movement \* Sway \* Running \* Breathing \* Collision \* Other procedural settings #### Update Weapon Ref Call \`Update Weapon Ref\` and provide the currently equipped weapon Actor. PWAS uses this reference when locating required sockets and other weapon-specific information. > \*\*Important\*\*\\ > If you change weapons without updating the Weapon Preset and Weapon Reference, PWAS may continue using information from the previously equipped weapon. #### Update Attachment / Parts Stats If you are using the included \*\*Weapon Parts and Attachments\*\* system, call: \`Update Attachment / Parts Stats\` and provide the currently equipped attachments and Weapon Parts. This applies any procedural stat modifiers provided by those items. This call is \*\*not required\*\* if your project does not use the included Weapon Parts or Attachment stat system. ### 3. Firing and Recoil #### Start Fire Call \`Start Fire\` when a shot is fired. This activates the procedural recoil behavior. #### Stop Fire \`Stop Fire\` should be called after firing so that the recoil return spring can activate. The amount of time between \`Start Fire\` and \`Stop Fire\` affects how the recoil behaves. A longer delay before \`Stop Fire\` can therefore change the appearance and feel of the recoil return. > \*\*Important\*\*\\ > Do not leave PWAS in its firing state after a shot. \`Stop Fire\` is required for the recoil return spring to behave correctly. For automatic weapons, these calls can be integrated into your existing firing/timer logic. ### 4. Aiming Call: \`Toggle Aim\` whenever the player's aiming state changes. \* \`true\` — enter ADS. \* \`false\` — leave ADS. PWAS uses this state for its procedural ADS system and related aiming behavior. ### 5. Running Call: \`Toggle Run\` whenever the player's running/sprinting state changes. \* \`true\` — player is running. \* \`false\` — player has stopped running. This controls PWAS's procedural running behavior. #### Toggle Run Alpha \`Toggle Run Alpha\` controls the checking of the animation curve used to reduce the procedural run pose. This is primarily useful when animations such as reloads need to partially or completely override the normal procedural running pose. As the curve value approaches \`1\`, less of the procedural run pose is applied. Because this curve is checked using a timer, \`Toggle Run Alpha\` can be used to enable the check only when it is needed. This function is optional unless your animation setup makes use of the Run Alpha curve. ### 6. Crouching Call: \`Toggle Crouch\` whenever the player's crouch state changes. \* \`true\` — crouched. \* \`false\` — standing. This allows PWAS to transition to and from its procedural crouch behavior. ### 7. Sliding If your character supports sliding, call: \`Toggle Slide\` when the slide state changes. \* \`true\` — sliding. \* \`false\` — no longer sliding. This controls the procedural slide animation system. This function is only required if you are using PWAS's sliding functionality. ### 8. Hold Breath Call: \`Toggle Hold Breath\` when the player starts or stops holding their breath. This can be used to reduce breathing-related procedural movement while aiming. This function is optional and only required if your project uses the Hold Breath functionality. ### 9. Changing Sights Call: \`Toggle Sight\` when the player switches between available sights or aim points. For example, this can be called when scrolling between: \* Multiple optic aim points \* Iron sights \* Backup sights \* Canted sights PWAS then updates the selected Aim Point used the next time the appropriate sight is selected. ### 10. Holstering Call: \`Toggle Holster\` when the weapon's holster state changes. \* \`true\` — holster the weapon. \* \`false\` — return the weapon from the holstered state. This function is only required if you are using PWAS's procedural holster functionality. ### 11. Sight FOV PWAS provides a function for retrieving the currently selected sight's ADS FOV. Use: \`Get Sight FOV\` when your camera system needs to determine the correct FOV while aiming. Sight Attachments can override the normal ADS FOV, so using this function ensures the camera receives the FOV configured for the currently selected sight. If the sight does not override the ADS FOV, your normal weapon ADS FOV can be used instead. ### Core Integration Calls For a typical FPS implementation, the most important PWAS calls are: \* \`Init Player\` \* \`Update Stats\` \* \`Update Weapon Ref\` \* \`Start Fire\` \* \`Stop Fire\` \* \`Toggle Aim\` \* \`Toggle Run\` \* \`Toggle Crouch\` > \*\*Note\*\*\\ > Additional functions such as \`Update Camera Transform\`, \`Toggle Slide\`, \`Toggle Hold Breath\`, \`Toggle Holster\`, \`Toggle Sight\`, \`Toggle Run Alpha\`, and attachment/part stat updates are only needed when using their corresponding functionality. \`Update Camera Transform\` only needs to be called manually if the Camera's base relative transform changes after initialization. ### Multiplayer The exact replication setup depends on your project. The included demo contains an example multiplayer implementation where PWAS calls are triggered from the appropriate local, server, or replicated gameplay events. You do not need to copy the demo's networking structure exactly. Integrate the PWAS calls into the replication model already used by your character and weapon framework. --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/pwas-integration.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/demo-project.md). # Demo Project The included demo project shows one complete example of how PWAS V2 can be integrated into a playable weapon system. Most of the demo framework is \*\*optional\*\* and can be modified, replaced, or removed depending on your project. ### What the Demo Includes The demo provides example implementations for: \* Weapon spawning and switching \* Firing and ammunition \* Fire modes \* Reloading and rechambering \* Modular Weapon Parts and Attachments \* Optics and iron sights \* First-person and third-person weapon handling \* Third-person proxy weapons \* Multiplayer replication \* Left Hand IK and foregrips \* Example HUD / gameplay functionality These systems are included to demonstrate how PWAS can be used in a complete project. > \*\*Important\*\*\\ > PWAS itself does not require the demo firing, inventory, ammo, replication, proxy weapon, or other gameplay systems. ### Recommended Use If you are starting a new project, the demo character and \`BP\_WeaponMaster\` provide the quickest starting point. You can build on these Blueprints and remove any functionality you do not need. If your project already has its own weapon framework, use the demo primarily as a reference for: \* PWAS function calls \* Weapon Preset setup \* Attachment integration \* Procedural aiming \* Animation / IK implementation ### Multiplayer The demo includes an example multiplayer setup using separate first-person and third-person weapon handling. The third-person proxy weapon and replication logic are \*\*example implementations\*\*, not required PWAS systems. Projects with an existing multiplayer framework can implement replication differently while keeping the local PWAS procedural systems. ### Modifying the Demo The demo is intended to be modified. You can replace or rewrite systems such as: \* Weapon spawning \* Inventory \* Firing \* Reload logic \* HUD \* Replication \* Third-person handling as long as the necessary PWAS references and function calls remain connected. > \*\*Tip\*\*\\ > Keep an unchanged copy of the demo project or original Blueprints as a reference while modifying the included systems. --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/demo-project.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026/pwas-v2.0.md). # PWAS V2.0
Added \* New socket-based procedural aiming system. \* Automatic optic detection using \`AimPoint\_#\`. \* Procedural iron-sight alignment using paired: \* \`MainIronSightRear\_#\` / \`MainIronSightFront\_#\` \* \`IronSightRear\_#\` / \`IronSightFront\_#\` \* Optional \`IronSightEyePoint\_#\` and \`MainIronSightEyePoint\_#\` support for controlling iron-sight eye distance. \* \`Attachment Aim Distance Offset\` for adjusting the aiming distance of attachment-based sights per weapon. \* Support for straight and canted iron sights. \* Multiple selectable sights and queued sight switching. \* Modular Weapon Part Data Assets. \* Modular Attachment Data Assets. \* Attachment stat modifiers. \* Attachment parent priority using \`Mesh Parent Names\`. \* Support for stat-only/no-mesh attachments. \* Attachment Tags for functionality and attachment parenting. \* Foregrip / Left Hand IK attachment support. \* Attachment-based ammo capacity overrides. \* Base iron-sight overriding for optics and replacement sights. \* Third-person weapon setup. \* Third-person procedural aiming and recoil examples. \* Multiplayer and proxy weapon examples. \* Sliding procedural animations. \* Freelook support. \* Hold-breath functionality. \* Additional ADS stages and procedural customization. \* \`ReloadAimAlpha\` animation curve for reducing third-person procedural aim pitch during reloads.
Improved \* Reworked procedural aiming for more reliable optic alignment. \* Iron sights now calculate alignment from physical rear and front sight positions rather than requiring a manually placed Aim Point. \* Improved Left Hand IK behavior during reloads and attachment changes. \* Improved hand IK stability by using bone-space grip targets. \* Improved third-person hand IK and weapon handling. \* Improved attachment discovery to support attachments nested under modular Weapon Parts. \* Improved attachment-parent selection with ordered fallback priorities. \* Improved runtime attachment spawning and initialization. \* Improved procedural run/movement calculations. \* Improved multiplayer demo behavior and proxy weapon handling. \* Improved sight discovery across weapon meshes, Weapon Parts, and Attachments.
PWAS V2 is a major update that expands the original procedural animation system and introduces a redesigned aiming system, modular weapon examples, attachments, third-person support, multiplayer examples, and extensive improvements to the core procedural systems. ### Animation Changes PWAS V2 introduces additional animation setup used by the new aiming and IK systems. New/updated curves include: \* \`LeftGripAlpha\` \* \`RightGripAlpha\` \* \`AimLockLoc\` \* \`AimLockRot\` \* \`ReloadRunAlpha\` \* \`ReloadAimAlpha\` These curves use inverted values: \`0\` = Fully locked / enabled\\ \`1\` = Released / animation controlled The procedural aiming setup also uses: \* \`VB ik\_hand\_gun\_parent\` \* \`VB ik\_hand\_gun\_ads\` See \*\*Skeleton & Animation Setup\*\* for details. ### Important Changes from V1 PWAS V2 changes several parts of the original setup. \* Manual Aim Location / Rotation values are no longer the primary method for aligning sights. \* Aim alignment is now primarily socket-based. \* The old \`Set Bone Transform To 0\` setup before the Base Adjuster is no longer required. \* The authored animation pose is now used as the baseline for procedural animation. \* Aim Location / Rotation offsets are used differently in V2. \* Weapon and attachment setup has been expanded considerably. > \*\*Important\*\*\\ > PWAS V2 should be treated as a major update rather than a drop-in replacement for every customized V1 implementation. If you have heavily modified PWAS V1, compare your changes with the included V2 demo before replacing existing systems. --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026/pwas-v2.0.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming.md). # Procedural Aiming PWAS V2 automatically detects available optics and iron sights using sockets on the weapon, Weapon Parts, and Attachments. Sight priority is controlled by the number at the end of each socket name. ### Optics Optics only require a single Aim Point socket: \`AimPoint\_#\` For example: \* \`AimPoint\_1\` \* \`AimPoint\_2\` \* \`AimPoint\_3\` Place the socket where you want the camera to align when aiming through that sight. > \*\*Tip\*\*\\ > Move the \`AimPoint\_#\` socket forward or backward to configure the optic's default eye distance. If the same optic requires different distances on different weapons, use \*\*Attachment Aim Distance Offset\*\* in the Weapon Preset instead of duplicating or repositioning the Attachment. The number determines the sight's priority/order. Lower numbers are selected first. An optic may also contain multiple Aim Points, such as a magnified optic with an additional canted sight. {% hint style="info" %} If multiple Aim Points use the same suffix, later entries are moved to the next available sight position. {% endhint %} ### Primary and Secondary Sight FOV When an Attachment contains multiple sight options, the sight with the \*\*lowest suffix number\*\* has the highest priority and is selected first. For example: \`AimPoint\_1\` → before \`AimPoint\_2\` \`IronSightRear\_1 / IronSightFront\_1\` → before \`IronSightRear\_2 / IronSightFront\_2\` If an \`AimPoint\_#\` and an iron-sight pair use the \*\*same suffix number\*\*, the \`AimPoint\_#\` is prioritized. The Attachment's primary sight can use its \*\*ADS FOV Override\*\*, while secondary sights on the same Attachment use the weapon's normal ADS FOV. For a combined magnified optic with a backup sight, it is recommended to give the main optic the lowest suffix. For example: \`AimPoint\_1\` — primary magnified optic\\ \`IronSightRear\_2 / IronSightFront\_2\` — backup iron sights This allows the main optic to use its magnified FOV while the backup sight uses the weapon's normal ADS FOV. If multiple sights require their own independent magnified FOV values, configure them as separate Attachments/Data Assets. ### Attachment Aim Distance Offset Some Attachments may require a different aiming distance depending on the weapon they are equipped on. For example, the same Red Dot Sight may look correct on a rifle but sit too close to the Camera when mounted on a pistol. The Weapon Preset provides: \`Attachment Aim Distance Offset\` This adds a weapon-specific distance adjustment to sights provided by Attachments without requiring the Attachment's \`AimPoint\_#\` or iron-sight sockets to be modified. \* \`0\` — no additional offset. \* Positive values — move the attached sight/weapon farther from the Camera. \* Negative values — move it closer. The offset applies to Attachment-based sights, including optics and Attachment-based iron sights. The weapon's main/base iron sights are not affected. This allows the same Attachment to be reused across weapons with different proportions while keeping an appropriate ADS distance. ### Parallax / Magnified Optic Setup The included demo framework contains an optional parallax/proximity effect for magnified optics such as scopes, ACOGs, and similar sights. The effect gradually hides selected parts of the optic mesh as the camera approaches the correct eye-relief position. This prevents the rear of the scope from obstructing the player's view while aiming through the optic. > \*\*Note\*\*\\ > This system is part of the included demo framework and is not required for PWAS procedural aiming. Projects that already use their own scope or optic rendering system can ignore this setup. ### Enabling the Parallax Optic Effect When using an Attachment Data Asset, add the following name to \*\*Attachment Tags\*\*: \`ParallaxOptic\` When the Attachment is spawned, this tag is applied to the spawned Attachment and enables the parallax/proximity update logic in \`BP\_AttachmentBase\`. Attachments do not have to receive this tag through a Data Asset. If you are using a child Blueprint of \`BP\_AttachmentBase\`, \`ParallaxOptic\` can instead be added manually to the Attachment mesh's \*\*Component Tags\*\*. > \*\*Important\*\*\\ > Adding \`ParallaxOptic\` to a standalone Static Mesh is not enough to enable the effect. The proximity logic is handled by \`BP\_AttachmentBase\`, so the optic must be spawned through the included Attachment system or use a child Blueprint of \`BP\_AttachmentBase\`. ### ScopeEyeRelief Socket The optic mesh must contain a socket named: \`ScopeEyeRelief\` PWAS uses this socket as the reference point when calculating the distance between the optic and the player's Camera. As the Camera approaches the \`ScopeEyeRelief\` socket, \`BP\_AttachmentBase\` calculates the proximity value and updates the material parameter: \`ScopeProximityAlpha\` This value is then used by the optic material to progressively hide the required portions of the mesh. The ideal position of \`ScopeEyeRelief\` depends on the optic. For example, a large rifle scope and a compact optic such as an ACOG may require different socket positions. Move the socket until the mesh begins and finishes clipping at the desired camera distance. > \*\*Note\*\*\\ > \`ScopeEyeRelief\` does not necessarily need to be placed directly on the rear lens. Its position can be adjusted to control when the proximity effect begins and reaches its full value. Some optics may require the socket to be positioned differently to preserve additional geometry. For example, the included ACOG uses a different eye-relief position so its built-in front iron sight remains visible when aiming through the optic. ### Scope Proximity Distance The included \`BP\_AttachmentBase\` uses the Camera's distance from \`ScopeEyeRelief\` to determine \`ScopeProximityAlpha\`. The proximity transition is controlled by: \* \*\*Clip Start Distance\*\* — distance at which the mesh begins transitioning. \* \*\*Clip Full Distance\*\* — distance at which the proximity effect reaches its full value. These can be adjusted to change how quickly the optic transitions as the Camera moves toward the eye-relief position. ### Clip Plane Position The included masked optic material uses: \`ClipPlanePosition\` to control how far through the optic mesh the clipping plane is positioned. Adjust this value per optic until the correct portion of the mesh is removed when aiming. Different optic shapes may require different values. A long scope, compact ACOG, or other magnified optic may not use the same clipping position. The included material handles the required direction internally, so \`ClipPlanePosition\` can be configured using a normal positive value in the Material Instance. #### Material Setup Only the mesh sections that should disappear while approaching the scope should use a material that supports the included clipping system. The included material uses: \`ScopeProximityAlpha\` together with \`ClipPlanePosition\` to control the \*\*Opacity Mask\*\* and progressively remove the required geometry. Other mesh sections that should remain visible should use normal/non-clipped material instances. This is especially important for optics containing additional geometry such as: \* Built-in iron sights \* Mounts \* Adjustment controls \* Exterior parts that should remain visible while aiming If geometry that should remain visible shares the same material slot as geometry that needs to be clipped, the optic may need separate material slots or masked/non-masked material variants. The included ACOG demonstrates this setup by using masked material variants only on the portions of the optic that should be affected by the proximity effect. > \*\*Important\*\*\\ > Do not apply the clipping material to every material slot unless the entire optic should be affected. Only the intended mesh sections should use the masked version. #### Non-Magnified Optics Red dots, holographic sights, pistol red dots, and other non-magnified optics do not normally require the included parallax/proximity scope effect. Only add \`ParallaxOptic\` when the optic is intended to use this functionality. ### Iron Sights Iron sights use separate \*\*Rear\*\* and \*\*Front\*\* sockets so PWAS can calculate the correct sight line automatically. The suffix number must match: \`IronSightRear\_1\`\\ \`IronSightFront\_1\` Another pair could use: \`IronSightRear\_2\`\\ \`IronSightFront\_2\` PWAS pairs the Rear and Front sockets using this number and calculates the required alignment automatically. This means the iron sights can have different heights or be canted without requiring a manually positioned Aim Point. #### Main Iron Sights The weapon's default/base iron sights should use: \`MainIronSightRear\_#\`\\ \`MainIronSightFront\_#\` For example: \`MainIronSightRear\_1\`\\ \`MainIronSightFront\_1\` These are treated as the weapon's built-in iron sights and can be ignored when an Attachment is configured to \*\*Override Base Iron Sight\*\*. Additional or detachable iron sights should use the normal: \`IronSightRear\_#\`\\ \`IronSightFront\_#\` This allows PWAS to distinguish the weapon's base sights from additional sights such as canted or attachment-mounted irons. ### Iron Sight Eye Distance An optional Eye Point socket can be added to the Rear sight mesh to control how far the camera sits behind the iron sights. For normal/additional iron sights, use: \`IronSightEyePoint\_#\` For the weapon's main/base iron sights, use: \`MainIronSightEyePoint\_#\` The suffix must match the corresponding Rear and Front pair. For example: \`MainIronSightRear\_1\`\\ \`MainIronSightFront\_1\`\\ \`MainIronSightEyePoint\_1\` or: \`IronSightRear\_2\`\\ \`IronSightFront\_2\`\\ \`IronSightEyePoint\_2\` If no matching Eye Point exists, PWAS uses the default \*\*Iron Sight Aim Distance\*\* instead. > \*\*Note\*\*\\ > Eye Point sockets are only required for iron sights. Optics control their default eye distance using the position of the \`AimPoint\_#\` socket. ### Sight Priority The suffix number determines the order in which available sights are selected. Lower suffix numbers have higher priority and are selected first. For example: \`AimPoint\_1\` → before \`AimPoint\_2\` \`IronSightRear\_1 / IronSightFront\_1\` → before \`IronSightRear\_2 / IronSightFront\_2\` If an \`AimPoint\_#\` and an iron-sight pair use the \*\*same suffix number\*\*, the \`AimPoint\_#\` is prioritized. For example: \`AimPoint\_1\` will be selected before: \`IronSightRear\_1 / IronSightFront\_1\` This allows a primary optic to keep the same priority number as a backup iron-sight pair while still being selected first. When changing sights, PWAS queues the selected sight and applies it when entering ADS. > \*\*Important\*\*\\ > The Rear and Front socket suffixes must match. \`IronSightRear\_2\` will only pair with \`IronSightFront\_2\`. > \*\*Recommended\*\*\\ > Use unique suffix numbers whenever possible. Reusing the same suffix is supported, but unique numbers make the sight order easier to understand and manage.
--- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Weapon Setup | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-setup.md) . The easiest way to create a new weapon is to duplicate the included demo weapon that most closely matches your weapon type and replace its assets. GitBook Assistant For example, use the included Rifle as a base for another rifle, the SMG for another SMG, and so on. GitBook Assistant ### 1\. Replace the Weapon Mesh[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup#id-1.-replace-the-weapon-mesh) Replace the existing weapon mesh with your own. GitBook Assistant The main weapon mesh/component should have the component tag: GitBook Assistant `Body` GitBook Assistant `Body` is used by several included systems as the default weapon component and as a fallback parent for parts and attachments. GitBook Assistant `LeftHandIK` GitBook Assistant `LeftHandIK` Tells PWAS that the weapon or part provides a Left Hand IK point. A corresponding `LeftHandIK` socket is also required on the relevant weapon mesh, Weapon Part, or Attachment. GitBook Assistant `RightHandIK` GitBook Assistant `RightHandIK` Works the same way for the right hand and uses the corresponding `RightHandIK` setup. GitBook Assistant > **Important** It is recommended to keep the `Body` tag even if your weapon uses modular Weapon Parts. > > GitBook Assistant ### 2\. Assign a Weapon Preset[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup#id-2.-assign-a-weapon-preset) Duplicate the Weapon Preset used by the demo weapon and assign the duplicate to **Weapon Preset**. GitBook Assistant The Weapon Preset contains the procedural settings used by PWAS, including: GitBook Assistant * Recoil GitBook Assistant * ADS GitBook Assistant * Sway GitBook Assistant * Movement GitBook Assistant * Breathing GitBook Assistant * Running GitBook Assistant * Jumping GitBook Assistant * Collision GitBook Assistant * Other procedural settings GitBook Assistant Open the **Weapon Preset** tab to customize these values. GitBook Assistant See **Procedural Editor** for information about editing, saving, and backing up Weapon Presets. GitBook Assistant [Procedural Editor](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor) > **Note** Weapon Part and Attachment stat modifiers are configured in their Data Assets and are not edited through the Procedural Editor. > > GitBook Assistant ### 3\. Replace Weapon-Specific Assets[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup#id-3.-replace-weapon-specific-assets) Replace any other assets needed by your weapon, such as: GitBook Assistant * Animations GitBook Assistant * Magazines GitBook Assistant * Sounds GitBook Assistant * Casings GitBook Assistant * Muzzle effects GitBook Assistant * Weapon Parts or Attachments GitBook Assistant Most of these belong to the included demo weapon framework and are **not required for PWAS itself**. GitBook Assistant ### What PWAS Actually Uses[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup#what-pwas-actually-uses) From `BP_WeaponMaster`, the main data PWAS cares about is: GitBook Assistant * **Weapon Preset** GitBook Assistant * Procedural stat modifiers provided by **Weapon Parts** GitBook Assistant * Procedural stat modifiers provided by **Weapon Attachments** GitBook Assistant Variables such as ammo, fire rate, fire modes, bullet class, reload logic, and similar weapon gameplay settings are part of the included demo framework and can be replaced with your own systems. GitBook Assistant ### Using Your Own Weapon Blueprint[](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup#using-your-own-weapon-blueprint) You do not need to use `BP_WeaponMaster`. GitBook Assistant If your project already has a weapon framework, keep your existing weapon Blueprint and provide PWAS with the required weapon preset/references and function calls. GitBook Assistant The included `BP_WeaponMaster` can be used as a reference for the integration. GitBook Assistant [Procedural Aiming](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-aiming) [Weapon Parts & Attachments](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments) [PreviousRecommended Workflow](https://dannyboy730.gitbook.io/pwas-v2-documentation/getting-started/recommended-workflow) [NextProcedural Editor](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/procedural-editor) Last updated 17 days ago Was this helpful? --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments.md). # Weapon Parts & Attachments Set up modular weapon parts, attachments, parent priorities, tags, and stat modifiers. PWAS V2 includes optional systems for creating modular weapons using \*\*Weapon Part\*\* and \*\*Attachment\*\* Data Assets. These systems are included with the demo framework and are not required for PWAS itself. If your project already has its own attachment system, you can continue using it and pass the required stat changes to PWAS instead. ### Weapon Parts vs Attachments \*\*Weapon Parts\*\* are generally used for structural parts of the weapon, such as: \* Barrels \* Handguards \* Stocks \* Pistol grips \* Other replaceable weapon components \*\*Attachments\*\* are generally used for equipment added to the weapon, such as: \* Optics \* Iron sights \* Foregrips \* Suppressors \* Flashlights / Lasers \* Magazines or magazine tubes Both can provide stat modifiers to PWAS. ### Mesh Parent Names \`Mesh Parent Names\` determines which weapon component the part or attachment should attach to. The array is a \*\*priority list\*\*. PWAS searches for each name in order and uses the first valid parent it finds. For example: \`\`\` Rail Handguard Body \`\`\` PWAS will: 1. Look for a component tagged \`Rail\`. 2. If none exists, look for \`Handguard\`. 3. If neither exists, fall back to \`Body\`. > \*\*Important\*\*\\ > Put the most specific/preferred parent first. \`Body\` should usually be last when it is only intended as a fallback. This search also includes modular Weapon Parts, so an attachment can be attached to a Handguard, Barrel, Rail, or another supported part rather than directly to the main weapon mesh. {% hint style="warning" %} \*\*Important — Attachment Spawn Order\*\* When an Attachment uses another Attachment as its parent, the parent Attachment must appear \*\*earlier in the Weapon Attachments array\*\*. Attachments are processed in array order, so the parent must already be spawned before PWAS can find it using \`Mesh Parent Names\`. For example: 1. \`Canted Rail\` 2. \`Canted Red Dot\` If the Canted Red Dot uses \`CantedRail\` in its \`Mesh Parent Names\`, the Canted Rail must be placed before the Red Dot in the Attachment array. This ordering is only important for \*\*Attachment → Attachment\*\* parenting. Weapon Parts are spawned before Attachments, so Attachments that parent directly to a Weapon Part do not require special Attachment ordering. {% endhint %} #### Common Examples \*\*Foregrip\*\* \`\`\` Handguard Body \`\`\` \*\*Rail-mounted attachment\*\* \`\`\` Rail Handguard Body \`\`\` \*\*Attachment that should always use the receiver\*\* \`\`\` Body \`\`\` ### Attach Socket Name \`Attach Socket Name\` determines which socket on the selected parent the mesh attaches to. For example: \`\`\` Mesh Parent Names: Handguard Body Attach Socket Name:Foregrip \`\`\` PWAS first finds the preferred parent and then attaches the mesh to the specified socket. ### Stat-Only / No-Mesh Entries A Weapon Part or Attachment does not need to contain a mesh. This can be useful for stat-only configurations such as a \*\*No Stock\*\* option or other modifiers that do not require a visible model. > \*\*Important\*\*\\ > Even when no mesh is assigned, \`Mesh Parent Names\` must still contain a valid parent name or the entry's stats will not be applied. Since PWAS demo weapons use the \`Body\` component tag, stat-only entries can normally use: \`\`\` Mesh Parent Names: Body \`\`\` \`Attach Socket Name\` is not required when no mesh is used. ### Attachment Tags \`Attachment Tags\` can provide additional functionality or allow a Weapon Part/Attachment to act as a parent for other attachments. For example, a rifle handguard may use: \* \`LeftHandIK\` — tells PWAS that the part can be used as the default left-hand support point. \* \`Handguard\` — allows other attachments to find this part by adding \`Handguard\` to their \`Mesh Parent Names\`. Foregrips override the default \`LeftHandIK\` part when equipped. > \*\*Important\*\*\\ > Attachment Tags are not only descriptive. Some tags affect PWAS functionality, while others allow the part to be found by the attachment system. > > \*\*Note\*\*\\ > Attachments do not have to be configured through an Attachment Data Asset. > > If an Attachment is created as a child of \`BP\_AttachmentBase\`, the required tags can instead be added manually to the Attachment mesh's \*\*Component Tags\*\*. > > Attachment Tags defined in an Attachment Data Asset are automatically applied as Component Tags when the Attachment is spawned. Adding the same Component Tags manually allows child \`BP\_AttachmentBase\` Blueprints to use the corresponding functionality without requiring the tag to come from the Data Asset. > > This does \*\*not\*\* apply to a standalone Static Mesh Component. Functionality implemented by \`BP\_AttachmentBase\`, such as the included parallax optic system, requires the Attachment to use \`BP\_AttachmentBase\` or a child Blueprint of it. \*\*\* ### Muzzle Collision PWAS uses a socket named \`MuzzleCollision\` to determine the effective end of the weapon for procedural wall collision. By default, the socket can be placed on the weapon itself. If a barrel, suppressor, or other part extends farther forward, that part or attachment can override the collision source. To use an attachment or weapon part as the collision source: \* Add the Attachment/Component Tag \`MuzzleCollision\`. \* Add a socket named \`MuzzleCollision\` to the corresponding mesh. \* PWAS will use the valid tagged part/attachment as the wall-collision reference. Wall collision uses sphere traces to detect nearby geometry and calculate how obstructed the weapon is. Light obstruction first pushes the weapon backward before progressively blending into the configured collision location and rotation as the obstruction becomes stronger. This helps prevent the weapon from immediately entering the full collision pose when only the end of the barrel touches a surface. \*\*Collision Trace Offset\*\* \`Collision Trace Offset\` adjusts the stable wall-collision trace relative to the camera. The offset is applied in \*\*camera-local space\*\*: \* \*\*X:\*\* Forward / Back \* \*\*Y:\*\* Right / Left \* \*\*Z:\*\* Up / Down This is useful because first-person weapons and hands are normally positioned below and slightly to the side of the camera rather than directly through the center of the screen. Adjust this value so the collision trace approximately follows the space occupied by the weapon and hands. Crouching automatically applies the configured crouch positional adjustment to the trace. \*\*Freelook\*\* Wall collision uses the saved base camera rotation rather than temporary camera rotation caused by Freelook. This keeps the collision trace aligned with the weapon while the player looks around independently. \`Update Camera Transform\` should therefore only be called when the camera's intended \*\*base relative transform\*\* changes. It should not be called every Tick or during temporary effects such as Freelook or camera recoil. > \*\*Notes\*\* > > Wall collision is a procedural approximation rather than full physical collision for the weapon and arms. Extreme angles may still produce minor clipping depending on weapon shape, animation pose, and trace settings. > > The included third-person example also contains procedural wall collision. Third-person collision is calculated locally as a visual procedural effect and uses a simplified weapon-based collision trace. \*\*\* ### Stat Modifiers Weapon Parts and Attachments can modify PWAS stats without changing the original Weapon Preset. For example: \* Stock → recoil changes \* Foregrip → recoil / handling changes \* Barrel → weapon-specific changes \* Optic → ADS-related changes The exact modifiers are configured inside the respective Data Asset. The Weapon Preset remains the weapon's baseline configuration, while equipped parts and attachments apply their modifiers on top of it. \*\*\* ### Magazines & Ammo Capacity Magazines, shotgun magazine tubes, belt boxes, and similar feed systems can be configured as Attachments. The attachment's ammo capacity value overrides the weapon's default maximum capacity. For example: \* Short Magazine → 20 \* Standard Magazine → 30 \* Drum Magazine → 60 > \*\*Note\*\*\\ > The included Attachment system currently supports Static Meshes only. Skeletal Mesh attachments require modifications to the demo attachment system. > > For weapons that use a Skeletal Mesh magazine or belt system, such as some LMGs, the Attachment can still be used for ammo-capacity/stat overrides while the visual magazine is handled separately by the weapon Blueprint. Magazine Attachments can also optionally define an \*\*Empty Magazine Mesh\*\* for use with the included demo weapon system. When a Magazine Attachment is equipped, the demo automatically updates its normal and empty magazine mesh references. The demo also calls \`OnMagazineMeshUpdated\` when the magazine mesh changes. Child weapon Blueprints can use this event to update additional magazine components, such as a spare magazine used during tactical reload animations. This functionality is optional, is not required by PWAS, and can be ignored if your project handles magazine visuals differently. {% hint style="info" %} \*\*Note:\*\* Magazines with significantly different dimensions may require matching reload animations so the hand correctly interacts with the magazine. The included magazine Attachment system handles mesh and ammo-capacity changes, but weapon-specific reload animation selection should be handled by the weapon framework. {% endhint %} \*\*\* ### Sight Attachment Optics and iron sights can be added through the normal Attachment system. Sight attachments can enable \`Override Base Iron Sight\`. When enabled, PWAS ignores: \`MainIronSightRear\_#\`\\ \`MainIronSightFront\_#\` Additional sights using: \`IronSightRear\_#\`\\ \`IronSightFront\_#\` remain available. This allows configurations such as a primary optic with canted iron sights. See \*\*Procedural Aiming\*\* for the complete socket naming rules. \*\*\* ### Foregrips Foregrips can provide the Left Hand IK target used by PWAS. The same foregrip can be used across multiple weapons, although weapons with significantly different proportions may require a different supporting-hand pose for the best result. --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting.md). # Troubleshooting This page covers common setup issues when using PWAS V2. If something is not working as expected, comparing your setup with one of the included demo weapons is often the quickest way to find the difference. #### Weapon Does Not Use the Expected Procedural Settings \*\*Check:\*\* \* The correct \`Weapon Preset\` is assigned. \* The weapon is providing the correct reference to PWAS. \* Weapon Part / Attachment modifiers are not unintentionally changing the preset values. Remember that equipped Weapon Parts and Attachments can modify the base Weapon Preset. \*\*\* #### Attachment Attaches to the Wrong Component Check the attachment's \`Mesh Parent Names\`. This array is a priority list. PWAS uses the \*\*first valid parent it finds\*\*. For example: \`\`\` RailHandguardBody \`\`\` If \`Body\` is placed first, PWAS may select the receiver before checking more specific components. > \*\*Fix:\*\* Put the preferred/specific parent first and use \`Body\` as a fallback where appropriate. Also make sure the target component contains a corresponding Component/Attachment Tag. \*\*\* #### Attachment Falls Back to the Weapon Root PWAS could not find a valid component matching any entry in \`Mesh Parent Names\`. Check that: \* The desired parent contains the correct tag. \* The spelling matches exactly. \* The required Weapon Part has spawned. \* \`Mesh Parent Names\` contains the intended fallback. \*\*\* #### Stat-Only / No-Mesh Attachment Does Not Apply Stats Even when an Attachment or Weapon Part has no mesh, it still requires a valid \`Mesh Parent Names\` entry. For most stat-only entries, use: \`\`\` Body \`\`\` \`Attach Socket Name\` is not required when no mesh is assigned. \*\*\* #### Optic Is Not Detected Make sure the optic contains a socket named: \`\`\` AimPoint\_# \`\`\` For example: \`\`\` AimPoint\_1 \`\`\` The number determines its priority in the available sight list. Also confirm that the socket is on the mesh PWAS is detecting. \*\*\* #### Iron Sights Do Not Align Check that the Rear and Front socket suffixes match: \`\`\` IronSightRear\_1 IronSightFront\_1 \`\`\` or for base sights: \`\`\` MainIronSightRear\_1 MainIronSightFront\_1 \`\`\` The Rear and Front sockets should be positioned at the \*\*actual physical sight centers\*\*. Do not move the Rear socket backward to control camera distance. Use \`IronSightEyePoint\_#\`, \`MainIronSightEyePoint\_#\`, or the default Iron Sight Aim Distance to control eye distance instead. \*\*\* #### "No Matching IronSightFront" Warning PWAS found a Rear sight but could not find a matching Front sight. Check: \* Rear and Front use the same suffix. \* Both meshes are currently attached/spawned. \* The Front socket name is correct. For example: \`\`\` IronSightRear\_3 IronSightFront\_3 \`\`\` When multiple separate Rear/Front meshes reuse the same suffix, make sure the corresponding meshes are added/spawned in matching order. Using unique suffixes where possible is recommended. \*\*\* #### Base Iron Sights Disappear When an Optic Is Equipped Check whether the optic has \`Override Base Iron Sight\` enabled. When enabled, sights using: \`\`\` MainIronSightRear\_# MainIronSightFront\_# \`\`\` are intentionally removed from the available sight list. Additional sights using \`IronSightRear\_#\` / \`IronSightFront\_#\` remain available. \*\*\* #### Iron Sight Camera Is Too Close or Too Far Away Add an optional Eye Point socket to the Rear sight mesh. For normal/additional sights, use: \`IronSightEyePoint\_#\` For main/base sights, use: \`MainIronSightEyePoint\_#\` The suffix should match the corresponding Rear/Front sight pair. PWAS uses the Eye Point to determine the desired aiming distance. If no Eye Point exists, PWAS uses the default \*\*Iron Sight Aim Distance\*\*. \*\*\* #### Hand Does Not Release During Reload / Rechamber Check the animation's grip curves: \* \`LeftGripAlpha\` \* \`RightGripAlpha\` PWAS uses inverted curve values: \`\`\` 0 = Fully locked 1 = Fully released \`\`\` Raise the appropriate curve when the hand should follow the animation instead of its IK target. \*\*\* #### Iron-Sight ADS Looks Too Static During Animations Use: \* \`AimLockLoc\` \* \`AimLockRot\` to allow some animation influence while aiming. These curves are also inverted: \`\`\` 0 = Fully locked1 = Released toward the animation \`\`\` Location usually requires a much smaller amount of movement than rotation. \*\*\* #### Foregrip Uses the Wrong Left-Hand Position Foregrips override the default \`LeftHandIK\` provided by a Weapon Part such as the handguard. Check that: \* The appropriate attachment contains the required \`LeftHandIK\` setup. \* The default handguard/part has the expected \`LeftHandIK\` tag. \* The supporting-hand pose is suitable for the weapon. A single foregrip setup can work across multiple weapons, but significantly different weapon proportions may require different poses. \*\*\* #### Attachments Under Weapon Parts Are Not Found If you have modified the included attachment/aim discovery logic, make sure attached actors are searched \*\*recursively\*\*. The included V2 setup supports attachments nested under Weapon Parts, for example: \`\`\` Weapon └─ Handguard └─ Front Sight \`\`\` \*\*\* #### Custom Character Aiming Does Not Work If you are using your own skeleton, confirm the required IK bones and PWAS Virtual Bones have been set up as described in \*\*Skeleton & Animation Setup\*\*. If you are using the included skeleton, these are already configured. \*\*\* #### Still Having Problems? Compare the affected setup with the closest included demo weapon. The demo weapons provide working examples for different weapon types, optics, iron sights, Weapon Parts, Attachments, and IK setups. --- # Agent Instructions This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com. ## Querying This Documentation If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question. Perform an HTTP GET request on the current page URL with the \`ask\` query parameter, and the optional \`goal\` query parameter: \`\`\` GET https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting.md?ask=&goal= \`\`\` \`ask\` is the immediate question: it should be specific, self-contained, and written in natural language. \`goal\` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal. The response will contain a direct answer to the question and relevant excerpts and sources from the documentation. Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections. --- # Demo Project | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/demo-project.md) . The included demo project shows one complete example of how PWAS V2 can be integrated into a playable weapon system. GitBook Assistant Most of the demo framework is **optional** and can be modified, replaced, or removed depending on your project. GitBook Assistant ### What the Demo Includes[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional#what-the-demo-includes) The demo provides example implementations for: GitBook Assistant * Weapon spawning and switching GitBook Assistant * Firing and ammunition GitBook Assistant * Fire modes GitBook Assistant * Reloading and rechambering GitBook Assistant * Modular Weapon Parts and Attachments GitBook Assistant * Optics and iron sights GitBook Assistant * First-person and third-person weapon handling GitBook Assistant * Third-person proxy weapons GitBook Assistant * Multiplayer replication GitBook Assistant * Left Hand IK and foregrips GitBook Assistant * Example HUD / gameplay functionality GitBook Assistant These systems are included to demonstrate how PWAS can be used in a complete project. GitBook Assistant > **Important** PWAS itself does not require the demo firing, inventory, ammo, replication, proxy weapon, or other gameplay systems. > > GitBook Assistant ### Recommended Use[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional#recommended-use) If you are starting a new project, the demo character and `BP_WeaponMaster` provide the quickest starting point. GitBook Assistant You can build on these Blueprints and remove any functionality you do not need. GitBook Assistant If your project already has its own weapon framework, use the demo primarily as a reference for: GitBook Assistant * PWAS function calls GitBook Assistant * Weapon Preset setup GitBook Assistant * Attachment integration GitBook Assistant * Procedural aiming GitBook Assistant * Animation / IK implementation GitBook Assistant ### Multiplayer[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional#multiplayer) The demo includes an example multiplayer setup using separate first-person and third-person weapon handling. GitBook Assistant The third-person proxy weapon and replication logic are **example implementations**, not required PWAS systems. GitBook Assistant Projects with an existing multiplayer framework can implement replication differently while keeping the local PWAS procedural systems. GitBook Assistant ### Modifying the Demo[](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional#modifying-the-demo) The demo is intended to be modified. GitBook Assistant You can replace or rewrite systems such as: GitBook Assistant * Weapon spawning GitBook Assistant * Inventory GitBook Assistant * Firing GitBook Assistant * Reload logic GitBook Assistant * HUD GitBook Assistant * Replication GitBook Assistant * Third-person handling GitBook Assistant as long as the necessary PWAS references and function calls remain connected. GitBook Assistant > **Tip** Keep an unchanged copy of the demo project or original Blueprints as a reference while modifying the included systems. > > GitBook Assistant [PreviousWeapon Parts & Attachments](https://dannyboy730.gitbook.io/pwas-v2-documentation/setup/weapon-parts-and-attachments) [NextTroubleshooting](https://dannyboy730.gitbook.io/pwas-v2-documentation/reference-additional/troubleshooting) Last updated 19 days ago Was this helpful? --- # PWAS V2.0 | Changelog | PWAS V2 Documentation For the complete documentation index, see [llms.txt](https://dannyboy730.gitbook.io/pwas-v2-documentation/llms.txt) . This page is also available as [Markdown](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026/pwas-v2.0.md) . Added[](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026#added) * New socket-based procedural aiming system. GitBook Assistant * Automatic optic detection using `AimPoint_#`. GitBook Assistant * Procedural iron-sight alignment using paired: GitBook Assistant * `MainIronSightRear_#` / `MainIronSightFront_#` GitBook Assistant * `IronSightRear_#` / `IronSightFront_#` GitBook Assistant * Optional `IronSightEyePoint_#` and `MainIronSightEyePoint_#` support for controlling iron-sight eye distance. GitBook Assistant * `Attachment Aim Distance Offset` for adjusting the aiming distance of attachment-based sights per weapon. GitBook Assistant * Support for straight and canted iron sights. GitBook Assistant * Multiple selectable sights and queued sight switching. GitBook Assistant * Modular Weapon Part Data Assets. GitBook Assistant * Modular Attachment Data Assets. GitBook Assistant * Attachment stat modifiers. GitBook Assistant * Attachment parent priority using `Mesh Parent Names`. GitBook Assistant * Support for stat-only/no-mesh attachments. GitBook Assistant * Attachment Tags for functionality and attachment parenting. GitBook Assistant * Foregrip / Left Hand IK attachment support. GitBook Assistant * Attachment-based ammo capacity overrides. GitBook Assistant * Base iron-sight overriding for optics and replacement sights. GitBook Assistant * Third-person weapon setup. GitBook Assistant * Third-person procedural aiming and recoil examples. GitBook Assistant * Multiplayer and proxy weapon examples. GitBook Assistant * Sliding procedural animations. GitBook Assistant * Freelook support. GitBook Assistant * Hold-breath functionality. GitBook Assistant * Additional ADS stages and procedural customization. GitBook Assistant * `ReloadAimAlpha` animation curve for reducing third-person procedural aim pitch during reloads. GitBook Assistant Improved[](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026#improved) * Reworked procedural aiming for more reliable optic alignment. GitBook Assistant * Iron sights now calculate alignment from physical rear and front sight positions rather than requiring a manually placed Aim Point. GitBook Assistant * Improved Left Hand IK behavior during reloads and attachment changes. GitBook Assistant * Improved hand IK stability by using bone-space grip targets. GitBook Assistant * Improved third-person hand IK and weapon handling. GitBook Assistant * Improved attachment discovery to support attachments nested under modular Weapon Parts. GitBook Assistant * Improved attachment-parent selection with ordered fallback priorities. GitBook Assistant * Improved runtime attachment spawning and initialization. GitBook Assistant * Improved procedural run/movement calculations. GitBook Assistant * Improved multiplayer demo behavior and proxy weapon handling. GitBook Assistant * Improved sight discovery across weapon meshes, Weapon Parts, and Attachments. GitBook Assistant PWAS V2 is a major update that expands the original procedural animation system and introduces a redesigned aiming system, modular weapon examples, attachments, third-person support, multiplayer examples, and extensive improvements to the core procedural systems. GitBook Assistant ### Animation Changes[](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026#animation-changes) PWAS V2 introduces additional animation setup used by the new aiming and IK systems. GitBook Assistant New/updated curves include: GitBook Assistant * `LeftGripAlpha` GitBook Assistant * `RightGripAlpha` GitBook Assistant * `AimLockLoc` GitBook Assistant * `AimLockRot` GitBook Assistant * `ReloadRunAlpha` GitBook Assistant * `ReloadAimAlpha` GitBook Assistant These curves use inverted values: GitBook Assistant `0` = Fully locked / enabled `1` = Released / animation controlled GitBook Assistant The procedural aiming setup also uses: GitBook Assistant * `VB ik_hand_gun_parent` GitBook Assistant * `VB ik_hand_gun_ads` GitBook Assistant See **Skeleton & Animation Setup** for details. GitBook Assistant ### Important Changes from V1[](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog/2026#important-changes-from-v1) PWAS V2 changes several parts of the original setup. GitBook Assistant * Manual Aim Location / Rotation values are no longer the primary method for aligning sights. GitBook Assistant * Aim alignment is now primarily socket-based. GitBook Assistant * The old `Set Bone Transform To 0` setup before the Base Adjuster is no longer required. GitBook Assistant * The authored animation pose is now used as the baseline for procedural animation. GitBook Assistant * Aim Location / Rotation offsets are used differently in V2. GitBook Assistant * Weapon and attachment setup has been expanded considerably. GitBook Assistant > **Important** PWAS V2 should be treated as a major update rather than a drop-in replacement for every customized V1 implementation. If you have heavily modified PWAS V1, compare your changes with the included V2 demo before replacing existing systems. > > GitBook Assistant [PreviousChangelog](https://dannyboy730.gitbook.io/pwas-v2-documentation/changelog) Last updated 17 days ago Was this helpful? ---