0ffa79efc3
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>
43 lines
2.3 KiB
C#
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" });
|
|
}
|
|
}
|