(Feat) Add footsteps
This commit is contained in:
@@ -10,6 +10,25 @@ class UMaterialInterface;
|
||||
class UStaticMesh;
|
||||
class UTexture2D;
|
||||
|
||||
/**
|
||||
* Famille d'outil, pour l'appariement avec les ressources recoltables.
|
||||
*
|
||||
* C'est le TYPE qui decide de ce qu'on peut abattre, jamais le mesh ni le nom :
|
||||
* un arbre acceptera { Axe }, un filon { Pickaxe }. None n'est pas un outil du
|
||||
* tout -- c'est la valeur de tous les objets existants, qui ne changent donc pas
|
||||
* de comportement.
|
||||
*/
|
||||
UENUM(BlueprintType)
|
||||
enum class EToolType : uint8
|
||||
{
|
||||
None UMETA(DisplayName = "Not a tool"),
|
||||
Axe,
|
||||
Pickaxe,
|
||||
|
||||
/** Sentinelle de comptage, jamais assignee a un objet. */
|
||||
Count UMETA(Hidden)
|
||||
};
|
||||
|
||||
/**
|
||||
* Definition d'un TYPE d'objet : "Bois", "Pomme", "Corde".
|
||||
* Un asset par type, cree dans le Content Browser, edite a la main.
|
||||
@@ -106,6 +125,100 @@ public:
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Item|Backpack", meta = (ClampMin = "0"))
|
||||
int32 BonusInventorySlots = 0;
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// En main
|
||||
//
|
||||
// Ce qu'on voit quand l'objet occupe la case active de la barre rapide.
|
||||
// C'est UHeldItemComponent qui lit ce bloc ; il ne concerne donc que le
|
||||
// visuel, jamais ce que l'objet fait.
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Cet objet apparait-il dans la main quand il est selectionne.
|
||||
*
|
||||
* Faux par defaut, et c'est delibere : les deux offsets ci-dessous se reglent
|
||||
* a l'oeil, objet par objet, sur un socket donne. Un vrai par defaut ferait
|
||||
* surgir toutes les ressources deja creees dans le poing du joueur, chacune
|
||||
* de travers, sans que personne l'ait demande.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Item|Held")
|
||||
bool bShowInHand = false;
|
||||
|
||||
/**
|
||||
* Mesh tenu en main. Vide = on reprend WorldMesh.
|
||||
*
|
||||
* A ne remplir que si l'objet au sol et l'objet en main different vraiment --
|
||||
* une buche posee en tas contre une buche unique, typiquement. Une hache,
|
||||
* elle, est la meme des deux cotes.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Item|Held", meta = (EditCondition = "bShowInHand"))
|
||||
TObjectPtr<UStaticMesh> HeldMesh;
|
||||
|
||||
/**
|
||||
* Ajustement du mesh sur le socket des BRAS (vue premiere personne).
|
||||
*
|
||||
* Necessaire parce qu'on s'attache a un OS du rig et pas a un socket taille
|
||||
* pour l'objet : le pivot d'un mesh d'outil tombe presque toujours sur son
|
||||
* centre, jamais sur le manche. Se regle a l'oeil en PIE.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Item|Held", meta = (EditCondition = "bShowInHand"))
|
||||
FTransform FirstPersonHeldOffset;
|
||||
|
||||
/**
|
||||
* Ajustement sur la main du CORPS (ce que les autres joueurs voient).
|
||||
*
|
||||
* Separe du precedent, et il le restera : les bras FPS et le mannequin UE5
|
||||
* sont deux rigs distincts, avec deux echelles et deux orientations d'os. Une
|
||||
* transform commune donnerait forcement une hache de travers d'un cote.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Item|Held", meta = (EditCondition = "bShowInHand"))
|
||||
FTransform ThirdPersonHeldOffset;
|
||||
|
||||
/**
|
||||
* Geste joue sur les BRAS quand cet objet arrive en main (MTG_Axe_Equip...).
|
||||
*
|
||||
* Un montage et pas un etat de la machine a etats : sortir un outil est un
|
||||
* geste PONCTUEL qui doit se superposer a ce que les bras faisaient deja --
|
||||
* meme raison que LandMontage. Un etat imposerait de decider combien de temps
|
||||
* y rester, et changer d'outil en pleine course y bloquerait la foulee.
|
||||
*
|
||||
* Vide = l'objet apparait sans geste, ce qui reste parfaitement jouable.
|
||||
* Rien n'est replique : les bras ne sont vus que par leur proprietaire.
|
||||
*/
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Item|Held")
|
||||
TObjectPtr<class UAnimMontage> EquipMontage;
|
||||
|
||||
/** Le mesh a montrer en main, en appliquant le repli sur WorldMesh. */
|
||||
UFUNCTION(BlueprintPure, Category = "Item|Held")
|
||||
UStaticMesh* GetHeldMesh() const { return HeldMesh ? HeldMesh.Get() : WorldMesh.Get(); }
|
||||
|
||||
/**
|
||||
* Pose le mesh tenu en main et son materiau sur un composant.
|
||||
* Pendant exact d'ApplyWorldVisualsTo, dont c'est le second appelant annonce.
|
||||
*/
|
||||
UFUNCTION(BlueprintCallable, Category = "Item|Held")
|
||||
void ApplyHeldVisualsTo(class UStaticMeshComponent* Component) const;
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Outil
|
||||
//
|
||||
// Volontairement reduit au TYPE pour l'instant : la puissance de recolte et
|
||||
// le cout en durabilite d'un coup n'ont pas encore de lecteur, et inventer
|
||||
// leur forme avant d'ecrire les ressources recoltables serait deviner.
|
||||
//
|
||||
// L'usure, elle, est deja tranchee : ce sera MaxUses / RemainingUses, comme
|
||||
// une canette. Un outil neuf part donc a MaxUses charges, l'inventaire les
|
||||
// suit deja au sol comme dans un coffre, et WBP_ItemDetails affiche deja la
|
||||
// barre correspondante -- rien a ajouter le jour venu.
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
/** Ce que cet objet sait recolter. None = ce n'est pas un outil. */
|
||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Item|Tool")
|
||||
EToolType ToolType = EToolType::None;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "Item|Tool")
|
||||
bool IsTool() const { return ToolType != EToolType::None; }
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Consommable
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user