Files
Unreal_EmberWild/Source/Survival_projet/Survival_projet.Build.cs
T
Mathew 0ffa79efc3 (Feat) Corps 3e personne anime
Le pawn n'avait aucun mesh 3e personne : en coop, les autres joueurs
voyaient un pseudo flotter au-dessus du vide. C'est aussi le prerequis de
la customisation de personnage, qu'on ne peut pas empiler sur un corps
inexistant.

UPlayerBodyAnimInstance publie l'etat du pawn pour ABP_PlayerBody_A, sur
le meme partage des roles que UFpsArmsAnimInstance : le C++ lit et
republie, le Blueprint choisit l'animation. Rien n'est replique -- tout
derive d'un etat que le moteur ou le projet synchronisent deja (Velocity,
bIsCrouched, bIsSprinting, RemoteViewPitch).

VerticalSpeed distingue le SAUT de la CHUTE : bIsFalling vaut vrai dans
les deux cas, le moteur appelant "falling" tout ce qui n'est pas au sol.
Sans son signe, sortir d'une falaise jouerait l'animation de detente.

Le Cast du pawn est relance dans NativeUpdateAnimation : chez un client
le mesh arrive par replication et peut s'animer avant que le pawn soit
la, ce qui figerait le corps de l'ami en pose de reference pour toute la
partie -- invisible en solo comme chez l'hote.

Dev_Scene rejoint MapsToCook : GameLevel peut pointer sur elle le temps
d'un test, et une reference soft n'est pas suivie par le cooker.

Limites connues : pas d'animation accroupie (absente du pack) et le
BlendSpace s'arrete a 500 alors que le sprint est a 650.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 13:53:54 +02:00

43 lines
2.3 KiB
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
public class Survival_projet : ModuleRules
{
public Survival_projet(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
// GameplayTags : Enhanced Input rend ses erreurs de remappage sous forme
// de FGameplayTagContainer. Sans ce module on peut declarer le type mais
// pas l'inspecter, et on perdrait la raison d'un echec dans le log.
// Niagara : ACookingStation pilote sa flamme depuis le C++ (allumage,
// extinction). Passer par un evenement Blueprint marcherait aussi, mais
// l'etat du feu appartient au C++ -- le Blueprint ne doit brancher que
// l'asset, pas decider quand il s'allume.
// DeveloperSettings : USurvivalAudioSettings derive de UDeveloperSettings dans
// un header public, donc la dependance doit l'etre aussi. C'est ce qui donne
// la page "Survival Audio" dans les Project Settings.
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "GameplayTags", "UMG", "Niagara", "DeveloperSettings" });
// EngineSettings : UGameMapsSettings::GetGameDefaultMap(), qui evite de
// redeclarer le chemin de la map de menu dans le C++ alors qu'il est
// deja dans DefaultEngine.ini.
// AnimGraphRuntime : UKismetAnimationLibrary::CalculateDirection, qui remplace
// la methode homonyme d'UAnimInstance depreciee en 5.8. Prive et pas public --
// seul le .cpp de UPlayerBodyAnimInstance l'appelle, son header n'en montre rien.
PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore", "EngineSettings", "AnimGraphRuntime" });
// Coop Steam : on ne depend QUE de l'API generique (OnlineSubsystem) et de
// ses helpers (OnlineSubsystemUtils, qui porte le resolveur d'adresses).
// Surtout PAS de OnlineSubsystemSteam en dur -- le code appellerait alors
// du Steam explicitement et ne compilerait plus sur une plateforme sans
// Steam. Le choix du service se fait par ini.
//
// Public et non Private : SessionSubsystem.h expose IOnlineSessionPtr et
// FOnlineSessionSearchResult dans sa declaration. Un header public qui
// montre les types d'un module prive ne compile pas chez celui qui l'inclut.
PublicDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" });
}
}