| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using TMPro;
- using DamageNumbersPro;
- namespace DamageNumbersPro.Internal
- {
- [CreateAssetMenu(fileName = "Preset", menuName = "TextMeshPro/Preset for DNP", order = -1)]
- public class DNPPreset : ScriptableObject
- {
- // Font
- public bool changeFontAsset;
- public TMP_FontAsset fontAsset;
- // Color
- public bool changeColor;
- public Color color = Color.white;
- public bool enableGradient;
- public VertexGradient gradient = new VertexGradient(Color.white, Color.white, Color.white, Color.white);
- // Number
- public bool changeNumber;
- public bool enableNumber = true;
- public TextSettings numberSettings = new TextSettings(0);
- public DigitSettings digitSettings = new DigitSettings(0);
- // Left Text
- public bool changeLeftText;
- public bool enableLeftText = true;
- public string leftText;
- public TextSettings leftTextSettings = new TextSettings(0f);
- // Right Text
- public bool changeRightText;
- public bool enableRightText = true;
- public string rightText;
- public TextSettings rightTextSettings = new TextSettings(0f);
- // Vertical Text
- public bool hideVerticalTexts = false;
- // Fade In
- public bool changeFadeIn = false;
- public float durationFadeIn = 0.2f;
- public bool enableOffsetFadeIn = true;
- [Tooltip("TextA and TextB move together from this offset.")]
- public Vector2 offsetFadeIn = new Vector2(0.5f, 0);
- public bool enableScaleFadeIn = true;
- [Tooltip("Scales in from this scale.")]
- public Vector2 scaleFadeIn = new Vector2(2, 2);
- public bool enableCrossScaleFadeIn = false;
- [Tooltip("Scales TextA in from this scale and TextB from the inverse of this scale.")]
- public Vector2 crossScaleFadeIn = new Vector2(1, 1.5f);
- public bool enableShakeFadeIn = false;
- [Tooltip("Shakes in from this offset.")]
- public Vector2 shakeOffsetFadeIn = new Vector2(0, 1.5f);
- [Tooltip("Shakes in at this frequency.")]
- public float shakeFrequencyFadeIn = 4f;
- // Fade Out
- public bool changeFadeOut = false;
- public float durationFadeOut = 0.2f;
- public bool enableOffsetFadeOut = true;
- [Tooltip("TextA and TextB move apart to this offset.")]
- public Vector2 offsetFadeOut = new Vector2(0.5f, 0);
- public bool enableScaleFadeOut = false;
- [Tooltip("Scales out to this scale.")]
- public Vector2 scaleFadeOut = new Vector2(2, 2);
- public bool enableCrossScaleFadeOut = false;
- [Tooltip("Scales TextA out to this scale and TextB to the inverse of this scale.")]
- public Vector2 crossScaleFadeOut = new Vector2(1, 1.5f);
- public bool enableShakeFadeOut = false;
- [Tooltip("Shakes out to this offset.")]
- public Vector2 shakeOffsetFadeOut = new Vector2(0, 1.5f);
- [Tooltip("Shakes out at this frequency.")]
- public float shakeFrequencyFadeOut = 4f;
- // Movement
- public bool changeMovement = false;
- public bool enableLerp = true;
- public LerpSettings lerpSettings = new LerpSettings(0);
- public bool enableVelocity = false;
- public VelocitySettings velocitySettings = new VelocitySettings(0);
- public bool enableShaking = false;
- [Tooltip("Shake settings during idle.")]
- public ShakeSettings shakeSettings = new ShakeSettings(new Vector2(0.005f, 0.005f));
- public bool enableFollowing = false;
- public FollowSettings followSettings = new FollowSettings(0);
- // Rotation
- public bool changeRotation = false;
- public bool enableStartRotation = false;
- [Tooltip("The minimum z-angle for the random spawn rotation.")]
- public float minRotation = -4f;
- [Tooltip("The maximum z-angle for the random spawn rotation.")]
- public float maxRotation = 4f;
- public bool enableRotateOverTime = false;
- [Tooltip("The minimum rotation speed for the z-angle.")]
- public float minRotationSpeed = -15f;
- [Tooltip("The maximum rotation speed for the z-angle.")]
- public float maxRotationSpeed = 15;
- [Tooltip("Defines rotation speed over lifetime.")]
- public AnimationCurve rotateOverTime = new AnimationCurve(new Keyframe[] { new Keyframe(0, 1), new Keyframe(0.4f, 1), new Keyframe(0.8f, 0), new Keyframe(1, 0) });
- // Scaling
- public bool changeScaling = false;
- public bool enableScaleByNumber = false;
- public ScaleByNumberSettings scaleByNumberSettings = new ScaleByNumberSettings(0);
- public bool enableScaleOverTime = false;
- [Tooltip("Will scale over it's lifetime using this curve.")]
- public AnimationCurve scaleOverTime = new AnimationCurve(new Keyframe(0, 1), new Keyframe(1, 0.7f));
- // Spam Control
- public bool changeSpamControl = false;
- public string spamGroup = "";
- public bool enableCombination = false;
- public CombinationSettings combinationSettings = new CombinationSettings(0);
- public bool enableDestruction = false;
- public DestructionSettings destructionSettings = new DestructionSettings(0);
- public bool enableCollision = false;
- public CollisionSettings collisionSettings = new CollisionSettings(0);
- public bool enablePush = false;
- public PushSettings pushSettings = new PushSettings(0);
- public bool IsApplied(DamageNumber dn)
- {
- TMP_Text[] textMeshs = dn.GetTextMeshs();
- if (textMeshs[0] == null)
- {
- dn.GetReferencesIfNecessary();
- textMeshs = dn.GetTextMeshs();
- }
- bool isApplied = true;
- // Font
- if (changeFontAsset)
- {
- foreach(TMP_Text tmp in textMeshs)
- {
- if (fontAsset != tmp.font)
- {
- isApplied = false;
- }
- }
- }
- // Color
- if (changeColor)
- {
- foreach (TMP_Text tmp in textMeshs)
- {
- if (color != tmp.color || enableGradient != tmp.enableVertexGradient || !gradient.Equals(tmp.colorGradient))
- {
- isApplied = false;
- }
- }
- }
- // Number
- if(changeNumber)
- {
- if(enableNumber != dn.enableNumber || !numberSettings.Equals(dn.numberSettings) || !digitSettings.Equals(dn.digitSettings))
- {
- isApplied = false;
- }
- }
- // Left Text
- if(changeLeftText)
- {
- if(enableLeftText != dn.enableLeftText || !leftTextSettings.Equals(dn.leftTextSettings) || leftText != dn.leftText)
- {
- isApplied = false;
- }
- }
- // Right Text
- if (changeRightText)
- {
- if (enableRightText != dn.enableRightText || !rightTextSettings.Equals(dn.rightTextSettings) || rightText != dn.rightText)
- {
- isApplied = false;
- }
- }
- // Vertical Texts
- if (hideVerticalTexts)
- {
- if(dn.enableTopText || dn.enableBottomText)
- {
- isApplied = false;
- }
- }
- // Fade In
- if(changeFadeIn)
- {
- if(durationFadeIn != dn.durationFadeIn || enableOffsetFadeIn != dn.enableOffsetFadeIn || offsetFadeIn != dn.offsetFadeIn ||
- enableScaleFadeIn != dn.enableScaleFadeIn || scaleFadeIn != dn.scaleFadeIn || enableCrossScaleFadeIn != dn.enableCrossScaleFadeIn ||
- crossScaleFadeIn != dn.crossScaleFadeIn || enableShakeFadeIn != dn.enableShakeFadeIn || shakeOffsetFadeIn != dn.shakeOffsetFadeIn ||
- shakeFrequencyFadeIn != dn.shakeFrequencyFadeIn)
- {
- isApplied = false;
- }
- }
- // Fade Out
- if (changeFadeOut)
- {
- if (durationFadeOut != dn.durationFadeOut || enableOffsetFadeOut != dn.enableOffsetFadeOut || offsetFadeOut != dn.offsetFadeOut ||
- enableScaleFadeOut != dn.enableScaleFadeOut || scaleFadeOut != dn.scaleFadeOut || enableCrossScaleFadeOut != dn.enableCrossScaleFadeOut ||
- crossScaleFadeOut != dn.crossScaleFadeOut || enableShakeFadeOut != dn.enableShakeFadeOut || shakeOffsetFadeOut != dn.shakeOffsetFadeOut ||
- shakeFrequencyFadeOut != dn.shakeFrequencyFadeOut)
- {
- isApplied = false;
- }
- }
- // Movement
- if(changeMovement)
- {
- if(enableLerp != dn.enableLerp || !lerpSettings.Equals(dn.lerpSettings) ||
- enableVelocity != dn.enableVelocity || !velocitySettings.Equals(dn.velocitySettings) ||
- enableShaking != dn.enableShaking || !shakeSettings.Equals(dn.shakeSettings) ||
- enableFollowing != dn.enableFollowing || !followSettings.Equals(dn.followSettings))
- {
- isApplied = false;
- }
- }
- // Rotation
- if(changeRotation)
- {
- if(enableStartRotation != dn.enableStartRotation || minRotation != dn.minRotation || maxRotation != dn.maxRotation ||
- enableRotateOverTime != dn.enableRotateOverTime || minRotationSpeed != dn.minRotationSpeed || maxRotationSpeed != dn.maxRotationSpeed || !rotateOverTime.Equals(dn.rotateOverTime))
- {
- isApplied = false;
- }
- }
- // Scale
- if(changeScaling)
- {
- if(enableScaleByNumber != dn.enableScaleByNumber || !scaleByNumberSettings.Equals(dn.scaleByNumberSettings) ||
- enableScaleOverTime != dn.enableScaleOverTime || !scaleOverTime.Equals(dn.scaleOverTime))
- {
- isApplied = false;
- }
- }
- // Spam Group
- if(changeSpamControl)
- {
- if(enableCombination != dn.enableCombination || !combinationSettings.Equals(dn.combinationSettings) ||
- enableDestruction != dn.enableDestruction || !destructionSettings.Equals(dn.destructionSettings) ||
- enableCollision != dn.enableCollision || !collisionSettings.Equals(dn.collisionSettings) ||
- enablePush != dn.enablePush || !pushSettings.Equals(dn.pushSettings))
- {
- isApplied = false;
- }
- }
- return isApplied;
- }
- public void Apply(DamageNumber dn)
- {
- TMP_Text[] textMeshs = dn.GetTextMeshs();
- // Font
- if (changeFontAsset)
- {
- foreach(TMP_Text tmp in textMeshs)
- {
- tmp.font = fontAsset;
- }
- }
- // Color
- if (changeColor)
- {
- foreach (TMP_Text tmp in textMeshs)
- {
- tmp.color = color;
- tmp.enableVertexGradient = enableGradient;
- tmp.colorGradient = gradient;
- }
- }
- // Number
- if (changeNumber)
- {
- dn.enableNumber = enableNumber;
- dn.numberSettings = numberSettings;
- dn.digitSettings = digitSettings;
- }
- // Left Text
- if (changeLeftText)
- {
- dn.enableLeftText = enableLeftText;
- dn.leftText = leftText;
- dn.leftTextSettings = leftTextSettings;
- }
- // Right Text
- if (changeRightText)
- {
- dn.enableRightText = enableRightText;
- dn.rightText = rightText;
- dn.rightTextSettings = rightTextSettings;
- }
- // Hide Vertical Texts
- if(hideVerticalTexts)
- {
- dn.enableTopText = dn.enableBottomText = false;
- }
- // Fade In
- if(changeFadeIn)
- {
- dn.durationFadeIn = durationFadeIn;
- dn.enableOffsetFadeIn = enableOffsetFadeIn;
- dn.offsetFadeIn = offsetFadeIn;
- dn.enableScaleFadeIn = enableScaleFadeIn;
- dn.scaleFadeIn = scaleFadeIn;
- dn.enableCrossScaleFadeIn = enableCrossScaleFadeIn;
- dn.crossScaleFadeIn = crossScaleFadeIn;
- dn.enableShakeFadeIn = enableShakeFadeIn;
- dn.shakeOffsetFadeIn = shakeOffsetFadeIn;
- dn.shakeFrequencyFadeIn = shakeFrequencyFadeIn;
- }
- // Fade Out
- if (changeFadeOut)
- {
- dn.durationFadeOut = durationFadeOut;
- dn.enableOffsetFadeOut = enableOffsetFadeOut;
- dn.offsetFadeOut = offsetFadeOut;
- dn.enableScaleFadeOut = enableScaleFadeOut;
- dn.scaleFadeOut = scaleFadeOut;
- dn.enableCrossScaleFadeOut = enableCrossScaleFadeOut;
- dn.crossScaleFadeOut = crossScaleFadeOut;
- dn.enableShakeFadeOut = enableShakeFadeOut;
- dn.shakeOffsetFadeOut = shakeOffsetFadeOut;
- dn.shakeFrequencyFadeOut = shakeFrequencyFadeOut;
- }
- // Movement
- if(changeMovement)
- {
- dn.enableLerp = enableLerp;
- dn.lerpSettings = lerpSettings;
- dn.enableVelocity = enableVelocity;
- dn.velocitySettings = velocitySettings;
- dn.enableShaking = enableShaking;
- dn.shakeSettings = shakeSettings;
- dn.enableFollowing = enableFollowing;
- dn.followSettings = followSettings;
- }
- // Rotation
- if(changeRotation)
- {
- dn.enableStartRotation = enableStartRotation;
- dn.minRotation = minRotation;
- dn.maxRotation = maxRotation;
- dn.enableRotateOverTime = enableRotateOverTime;
- dn.minRotationSpeed = minRotationSpeed;
- dn.maxRotationSpeed = maxRotationSpeed;
- dn.rotateOverTime = rotateOverTime;
- }
- // Scale
- if(changeScaling)
- {
- dn.enableScaleByNumber = enableScaleByNumber;
- dn.scaleByNumberSettings = scaleByNumberSettings;
- dn.enableScaleOverTime = enableScaleOverTime;
- dn.scaleOverTime = scaleOverTime;
- }
- // Spam Control
- if(changeSpamControl)
- {
- if(dn.spamGroup == null || dn.spamGroup == "")
- {
- dn.spamGroup = spamGroup;
- }
- dn.enableCombination = enableCombination;
- dn.combinationSettings = combinationSettings;
- dn.enableDestruction = enableDestruction;
- dn.destructionSettings = destructionSettings;
- dn.enableCollision = enableCollision;
- dn.collisionSettings = collisionSettings;
- dn.enablePush = enablePush;
- dn.pushSettings = pushSettings;
- }
- }
- public void Get(DamageNumber dn)
- {
- TMP_Text[] textMeshs = dn.GetTextMeshs();
- // Font
- changeFontAsset = true;
- foreach (TMP_Text tmp in textMeshs)
- {
- if(tmp != null)
- {
- fontAsset = tmp.font;
- }
- }
- // Color
- changeColor = true;
- foreach (TMP_Text tmp in textMeshs)
- {
- if(tmp != null)
- {
- color = tmp.color;
- enableGradient = tmp.enableVertexGradient;
- gradient = tmp.colorGradient;
- }
- }
- // Fade In
- changeFadeIn = true;
- durationFadeIn = dn.durationFadeIn;
- enableOffsetFadeIn = dn.enableOffsetFadeIn;
- offsetFadeIn = dn.offsetFadeIn;
- enableScaleFadeIn = dn.enableScaleFadeIn;
- scaleFadeIn = dn.scaleFadeIn;
- enableCrossScaleFadeIn = dn.enableCrossScaleFadeIn;
- crossScaleFadeIn = dn.crossScaleFadeIn;
- enableShakeFadeIn = dn.enableShakeFadeIn;
- shakeOffsetFadeIn = dn.shakeOffsetFadeIn;
- shakeFrequencyFadeIn = dn.shakeFrequencyFadeIn;
- // Fade Out
- changeFadeOut = true;
- durationFadeOut = dn.durationFadeOut;
- enableOffsetFadeOut = dn.enableOffsetFadeOut;
- offsetFadeOut = dn.offsetFadeOut;
- enableScaleFadeOut = dn.enableScaleFadeOut;
- scaleFadeOut = dn.scaleFadeOut;
- enableCrossScaleFadeOut = dn.enableCrossScaleFadeOut;
- crossScaleFadeOut = dn.crossScaleFadeOut;
- enableShakeFadeOut = dn.enableShakeFadeOut;
- shakeOffsetFadeOut = dn.shakeOffsetFadeOut;
- shakeFrequencyFadeOut = dn.shakeFrequencyFadeOut;
- // Movement
- changeMovement = true;
- enableLerp = dn.enableLerp;
- lerpSettings = dn.lerpSettings;
- enableVelocity = dn.enableVelocity;
- velocitySettings = dn.velocitySettings;
- enableShaking = dn.enableShaking;
- shakeSettings = dn.shakeSettings;
- enableFollowing = dn.enableFollowing;
- followSettings = dn.followSettings;
- // Rotation
- changeRotation = true;
- enableStartRotation = dn.enableStartRotation;
- minRotation = dn.minRotation;
- maxRotation = dn.maxRotation;
- enableRotateOverTime = dn.enableRotateOverTime;
- minRotationSpeed = dn.minRotationSpeed;
- maxRotationSpeed = dn.maxRotationSpeed;
- rotateOverTime = dn.rotateOverTime;
- // Scale
- changeScaling = true;
- enableScaleByNumber = dn.enableScaleByNumber;
- scaleByNumberSettings = dn.scaleByNumberSettings;
- enableScaleOverTime = dn.enableScaleOverTime;
- scaleOverTime = dn.scaleOverTime;
- // Spam Group
- changeSpamControl = true;
- spamGroup = dn.spamGroup != "" ? "Default" : "";
- enableCombination = dn.enableCombination;
- combinationSettings = dn.combinationSettings;
- enableDestruction = dn.enableDestruction;
- destructionSettings = dn.destructionSettings;
- enableCollision = dn.enableCollision;
- collisionSettings = dn.collisionSettings;
- enablePush = dn.enablePush;
- pushSettings = dn.pushSettings;
- }
- }
- }
|