private string PropertyModifierValueString(PropertyModifier modifier, bool absolute = false) { modifier.Entity = modifier.Entity ?? CharacterManager.Instance.Character.Entity; modifier.ChangeStack(StackCount); var property = modifier.Entity.GetComponent <PropertiesComponent>().Get(modifier.Property.Id); var contains = property.Modifiers.Contains(modifier); if (contains) { property.Modifiers.Remove(modifier); } var value = property.Value(); var delta = modifier.Modify(value) - value; delta = absolute ? Mathf.Abs(delta) : delta; if (contains) { property.Modifiers.Add(modifier); } return(Property.ValueString(modifier.Property.Type, delta)); }
private string PropertyModifierValueString(PropertyModifier modifier, bool absolute = false) { modifier.Entity = modifier.Entity ?? CharacterManager.Instance.Character.Entity; var value = modifier.Modify(0); value = absolute ? Mathf.Abs(value) : value; return(Property.ValueString(modifier.Property.Type, value)); }
/// <summary> /// Attempts to call each of the given <see cref="PropertyModifier"/> options to modify the target. /// </summary> /// <param name="source">The source to utilize in the modification.</param> /// <param name="target">The target to modify.</param> /// <param name="offset">The offset of the target against the source when modifying.</param> public virtual void Modify(GameObject source, GameObject target, GameObject offset = null) { if (!isActiveAndEnabled || !ValidateCache(source, target, offset)) { return; } Premodified?.Invoke(eventData.Set(source, target, offset)); positionModifier?.Modify(source, target, offset); rotationModifier?.Modify(source, target, offset); scaleModifier?.Modify(source, target, offset); Modified?.Invoke(eventData.Set(source, target, offset)); }