/* Sets the base value of an attribute. Existing active modifiers are NOT cleared and will act upon the new base value. */ public void SetNumericAttributeBase(FGameplayAttribute Attribute, float NewBaseValue) { }
/* Gets the base value of an attribute. That is, the value of the attribute with no stateful modifiers */ public float GetNumericAttributeBase(FGameplayAttribute Attribute) { return(1f); }
// Not happy with this interface but don't see a better way yet. How should outside code (UI, etc) ask things like 'how much is this gameplay effect modifying my damage by' // (most likely we want to catch this on the backend - when damage is applied we can get a full dump/history of how the number got to where it is. But still we may need polling methods like below (how much would my damage be) public float GetGameplayEffectMagnitude(FActiveGameplayEffectHandle Handle, FGameplayAttribute Attribute) { return(1); }
/** * Does this ability system component have this attribute? * * @param Attribute Handle of the gameplay effect to retrieve target tags from * * @return true if Attribute is valid and this ability system component contains an attribute set that contains Attribute. Returns false otherwise. */ public bool HasAttributeSetForAttribute(FGameplayAttribute Attribute) { return(false); }
/** * Applies an inplace mod to the given attribute. Unlike ApplyModToAttribute this function will run on the client or server. * This may result in problems related to prediction and will not roll back properly. */ public void ApplyModToAttributeUnsafe(FGameplayAttribute Attribute, EGameplayModOp ModifierOp, float ModifierMagnitude) { }
public float GetNumericAttributeChecked(FGameplayAttribute Attribute) { return(1f); }
public bool Equal(FGameplayAttribute Dest) { return(string.Equals(Attribute, Dest.GetUProperty())); }
/** * 任何修改attribute的 base value前会被调用 * 这个方法不能调用gameplay相关的事件或者callback */ public virtual void PreAttributeBaseChange(FGameplayAttribute Attribute, ref float NewValue) { }
public int GetTypeHash(FGameplayAttribute InAttribute) { // FIXME: Use ObjectID or something to get a better, less collision prone hash //return PointerHash(InAttribute.Attribute); return(0); }
public FGameplayEffectAttributeCaptureDefinition(FGameplayAttribute InAttribute, EGameplayEffectAttributeCaptureSource InSource, bool InSnapshot) { }
public FGameplayModifierEvaluatedData(FGameplayAttribute InAttribute, EGameplayModOp InModOp, float InMagnitude, FActiveGameplayEffectHandle InHandle) { }
/** Updates the aggregators for the past in handle, this will handle it so the UAttributeSets stats only get one update for the delta change */ public void UpdateAggregatorMod(FActiveGameplayEffectHandle ActiveHandle, FGameplayAttribute Attribute, FGameplayEffectSpec Spec, bool bWasLocallyGenerated, FActiveGameplayEffectHandle InHandle) { }
/* Adds a new modified attribute struct, will always add so check to see if it exists first */ public FGameplayEffectModifiedAttribute AddModifiedAttribute(FGameplayAttribute Attribute) { FGameplayEffectModifiedAttribute a = new FGameplayEffectModifiedAttribute(); return(a); }