FCBP_CPSkeletal

Skeletal mesh, physics and animation assets of an entity. Passed with .skeletal(...).

Setters

Setter Effect
skeletalMesh(USkeletalMesh*) Main skeletal mesh. Also used to auto-size the entity’s capsule.
skeletalMeshChilds(TArray<USkeletalMesh*>) Extra meshes added as leader-pose children (modular characters following the main skeleton).
physicsAsset(UPhysicsAsset*) Physics asset; used at death for the ragdoll.
animClass(TSubclassOf<UCAnimInstance>) Animation Blueprint class. If null, falls back to CdryxTemplateAnimBP. Set after the mesh.
animSequences(TMap<FName, UAnimSequence*>) Idle/walk/run/jump sequences. Keys must be the enumToName of ECAnimeTemplateSequenceName (that is how the template AnimBP looks them up). Exposed on the AnimInstance as cdryxAnimSequenceMap.
blendspaces(TMap<FName, UBlendSpace*>) Blendspaces, keyed by ECAnimeTemplateBlendspaceName names. Exposed as cdryxBlendSpaceMap.
animMontageBases(TArray<FCBP_MontageWithName>) Montages per slot → FCBP_MontageWithName. The maker dispatches each key: ATTACK_0..9 build the combo array, DAMAGED/KILLED/BLOCK_START/BLOCK_END/RANGE_START/RANGE_END/TURN_LEFT/TURN_RIGHT each fill their dedicated montage (first found wins).

Example

FCBP_CPSkeletal skeletal = FCBP_CPSkeletal()
    .skeletalMesh(retrieveAsset<USkeletalMesh>("ENEMY_MESH"))
    .skeletalMeshChilds({ retrieveAsset<USkeletalMesh>("ENEMY_ARMOR") })
    .physicsAsset(retrieveAsset<UPhysicsAsset>("ENEMY_PHYSICS"))
    .animClass(retrieveClass<UCAnimInstance>("ENEMY_ANIM_CLASS"))
    .animSequences({
        {"IDLE_ANIM_SEQUENCE", retrieveAsset<UAnimSequence>("ENEMY_IDLE")},
        {"WALK_ANIM_SEQUENCE", retrieveAsset<UAnimSequence>("ENEMY_WALK")},
    })
    .blendspaces({
        {"WALK w/LEAN+SLOPE_BLENDSPACE_2D", retrieveAsset<UBlendSpace>("ENEMY_WALK_BS")},
    })
    .animMontageBases({
        FCBP_MontageWithName().animMontageBaseMap({
            {ECSkeletalMontageName::ATTACK_0_ANIM, retrieveAsset<UAnimMontage>("ENEMY_ATTACK")},
        }),
    });