net.dreditor.textdisplaying 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.attestation.p7m +0 -0
- package/CGLineTextDisplayer.cs +12 -12
- package/CGLineTextDisplayer.cs.meta +11 -11
- package/ClearTextOnLineEnd.cs +17 -17
- package/ClearTextOnLineEnd.cs.meta +11 -11
- package/ColorByCharacterTextModifier.cs +45 -45
- package/ColorByCharacterTextModifier.cs.meta +11 -11
- package/DREditor.TextDisplaying.asmdef +19 -19
- package/DREditor.TextDisplaying.asmdef.meta +7 -7
- package/DialogueLineTextDisplayer.cs +187 -187
- package/DialogueLineTextDisplayer.cs.meta +11 -11
- package/DisplayFormattedString.cs +68 -68
- package/DisplayFormattedString.cs.meta +1 -1
- package/DisplayOwnedIntCurrency.cs +56 -56
- package/DisplayOwnedIntCurrency.cs.meta +1 -1
- package/HighlightTextModifier.cs +70 -70
- package/HighlightTextModifier.cs.meta +11 -11
- package/ITextDisplayerHandler.cs +22 -22
- package/ITextDisplayerHandler.cs.meta +11 -11
- package/OptionsTextMessage.cs +53 -53
- package/OptionsTextMessage.cs.meta +11 -11
- package/OptionsTextSpeedMessage.cs +82 -82
- package/OptionsTextSpeedMessage.cs.meta +11 -11
- package/RegexEscapeModifier.cs +43 -43
- package/RegexEscapeModifier.cs.meta +11 -11
- package/ReplaceGroup.cs +33 -33
- package/ReplaceGroup.cs.meta +11 -11
- package/ReplaceTextModifier.cs +53 -53
- package/ReplaceTextModifier.cs.meta +11 -11
- package/ReplaceTextModifierBase.cs +18 -18
- package/ReplaceTextModifierBase.cs.meta +11 -11
- package/{Samples → Samples~}/CGDialogueUIVisible.asset +21 -21
- package/{Samples → Samples~}/CGDialogueUIVisible.asset.meta +8 -8
- package/{Samples → Samples~}/CGTextBox.asset +21 -21
- package/{Samples → Samples~}/CGTextBox.asset.meta +8 -8
- package/{Samples → Samples~}/CG_Line_Text_Displayer.prefab +147 -147
- package/{Samples → Samples~}/CG_Line_Text_Displayer.prefab.meta +7 -7
- package/{Samples → Samples~}/Clear_Text_On_Line_End.prefab +46 -46
- package/{Samples → Samples~}/Clear_Text_On_Line_End.prefab.meta +7 -7
- package/{Samples → Samples~}/Color_By_Character_Text_Modifier.prefab +51 -51
- package/{Samples → Samples~}/Color_By_Character_Text_Modifier.prefab.meta +7 -7
- package/{Samples → Samples~}/DRE_TextDebugging.unity +492 -492
- package/{Samples → Samples~}/DRE_TextDebugging.unity.meta +7 -7
- package/{Samples → Samples~}/DialogueTextBox.asset +21 -21
- package/{Samples → Samples~}/DialogueTextBox.asset.meta +8 -8
- package/{Samples → Samples~}/Dialogue_Line_Text_Displayer.prefab +142 -142
- package/{Samples → Samples~}/Dialogue_Line_Text_Displayer.prefab.meta +7 -7
- package/{Samples → Samples~}/Highlight_Text_Modifier.prefab +49 -49
- package/{Samples → Samples~}/Highlight_Text_Modifier.prefab.meta +7 -7
- package/{Samples → Samples~}/Option_Message_UI_ETemplate.prefab +335 -335
- package/{Samples → Samples~}/Option_Message_UI_ETemplate.prefab.meta +7 -7
- package/{Samples → Samples~}/OptionsUITextSpeedMessage.asset +21 -21
- package/{Samples → Samples~}/OptionsUITextSpeedMessage.asset.meta +8 -8
- package/{Samples → Samples~}/Regex_Escape_Modifier.prefab +47 -47
- package/{Samples → Samples~}/Regex_Escape_Modifier.prefab.meta +7 -7
- package/{Samples → Samples~}/Replace_Text_Modifier.prefab +49 -49
- package/{Samples → Samples~}/Replace_Text_Modifier.prefab.meta +7 -7
- package/{Samples → Samples~}/Symbol_Color_Text_Modifier.prefab +50 -50
- package/{Samples → Samples~}/Symbol_Color_Text_Modifier.prefab.meta +7 -7
- package/{Samples → Samples~}/Symbol_Protag_UI_Modifier.prefab +48 -48
- package/{Samples → Samples~}/Symbol_Protag_UI_Modifier.prefab.meta +7 -7
- package/{Samples → Samples~}/Text_Display_Debugger.prefab +467 -467
- package/{Samples → Samples~}/Text_Display_Debugger.prefab.meta +7 -7
- package/{Samples → Samples~}/Text_Displayer.prefab +624 -624
- package/{Samples → Samples~}/Text_Displayer.prefab.meta +7 -7
- package/{Samples → Samples~}/TrialDialogueTextBox.asset +21 -21
- package/{Samples → Samples~}/TrialDialogueTextBox.asset.meta +8 -8
- package/{Samples → Samples~}/Trial_Dialogue_Line_Text_Displayer.prefab +82 -82
- package/{Samples → Samples~}/Trial_Dialogue_Line_Text_Displayer.prefab.meta +7 -7
- package/SetTextDisplaySpeed.cs +59 -59
- package/SetTextDisplaySpeed.cs.meta +11 -11
- package/SymbolColorTextModifier.cs +24 -24
- package/SymbolColorTextModifier.cs.meta +11 -11
- package/SymbolProtagUIModifier.cs +41 -41
- package/SymbolProtagUIModifier.cs.meta +11 -11
- package/SymbolTextModifier.cs +47 -47
- package/SymbolTextModifier.cs.meta +11 -11
- package/TMPMarquee.cs +177 -177
- package/TMPMarquee.cs.meta +11 -11
- package/TMPMarqueeBase.cs +103 -103
- package/TMPMarqueeBase.cs.meta +1 -1
- package/TextDisplayDebugger.cs +86 -86
- package/TextDisplayDebugger.cs.meta +11 -11
- package/TextDisplayModifier.cs +28 -28
- package/TextDisplayModifier.cs.meta +11 -11
- package/TextDisplayer.cs +254 -254
- package/TextDisplayer.cs.meta +11 -11
- package/TextDisplayerBase.cs +106 -106
- package/TextDisplayerBase.cs.meta +11 -11
- package/package.json +42 -37
- package/package.json.meta +7 -7
- package/Samples.meta +0 -8
package/SymbolTextModifier.cs
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
-
using DREditor.Dialogues;
|
|
3
|
-
using TMPro;
|
|
4
|
-
using UnityEngine;
|
|
5
|
-
|
|
6
|
-
namespace DREditor.TextDisplaying
|
|
7
|
-
{
|
|
8
|
-
/// <summary>
|
|
9
|
-
///
|
|
10
|
-
/// </summary>
|
|
11
|
-
public abstract class SymbolTextModifier : TextDisplayModifier
|
|
12
|
-
{
|
|
13
|
-
/// <summary>
|
|
14
|
-
///
|
|
15
|
-
/// </summary>
|
|
16
|
-
[Tooltip("")]
|
|
17
|
-
[SerializeField] protected char startingSymbol = '$';
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
/// <inheritdoc/>
|
|
21
|
-
public override string ApplyModification(string text, Line currentLine = null, TMP_Text box = null)
|
|
22
|
-
{
|
|
23
|
-
if (TextStartsWithSymbol(text))
|
|
24
|
-
{
|
|
25
|
-
OnSymbolFound(text, currentLine, box);
|
|
26
|
-
|
|
27
|
-
text = text.Remove(text.IndexOf(startingSymbol), 1);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return text;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/// <summary>
|
|
34
|
-
///
|
|
35
|
-
/// </summary>
|
|
36
|
-
/// <param name="text"></param>
|
|
37
|
-
/// <returns></returns>
|
|
38
|
-
protected virtual bool TextStartsWithSymbol(string text) => text.Split(' ')[0].Contains(startingSymbol);
|
|
39
|
-
|
|
40
|
-
/// <summary>
|
|
41
|
-
///
|
|
42
|
-
/// </summary>
|
|
43
|
-
/// <param name="text"></param>
|
|
44
|
-
/// <param name="currentLine"></param>
|
|
45
|
-
/// <param name="box"></param>
|
|
46
|
-
protected abstract void OnSymbolFound(string text, Line currentLine = null, TMP_Text box = null);
|
|
47
|
-
}
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using DREditor.Dialogues;
|
|
3
|
+
using TMPro;
|
|
4
|
+
using UnityEngine;
|
|
5
|
+
|
|
6
|
+
namespace DREditor.TextDisplaying
|
|
7
|
+
{
|
|
8
|
+
/// <summary>
|
|
9
|
+
///
|
|
10
|
+
/// </summary>
|
|
11
|
+
public abstract class SymbolTextModifier : TextDisplayModifier
|
|
12
|
+
{
|
|
13
|
+
/// <summary>
|
|
14
|
+
///
|
|
15
|
+
/// </summary>
|
|
16
|
+
[Tooltip("")]
|
|
17
|
+
[SerializeField] protected char startingSymbol = '$';
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
/// <inheritdoc/>
|
|
21
|
+
public override string ApplyModification(string text, Line currentLine = null, TMP_Text box = null)
|
|
22
|
+
{
|
|
23
|
+
if (TextStartsWithSymbol(text))
|
|
24
|
+
{
|
|
25
|
+
OnSymbolFound(text, currentLine, box);
|
|
26
|
+
|
|
27
|
+
text = text.Remove(text.IndexOf(startingSymbol), 1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return text;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/// <summary>
|
|
34
|
+
///
|
|
35
|
+
/// </summary>
|
|
36
|
+
/// <param name="text"></param>
|
|
37
|
+
/// <returns></returns>
|
|
38
|
+
protected virtual bool TextStartsWithSymbol(string text) => text.Split(' ')[0].Contains(startingSymbol);
|
|
39
|
+
|
|
40
|
+
/// <summary>
|
|
41
|
+
///
|
|
42
|
+
/// </summary>
|
|
43
|
+
/// <param name="text"></param>
|
|
44
|
+
/// <param name="currentLine"></param>
|
|
45
|
+
/// <param name="box"></param>
|
|
46
|
+
protected abstract void OnSymbolFound(string text, Line currentLine = null, TMP_Text box = null);
|
|
47
|
+
}
|
|
48
48
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 5587137b550131b4599b2165976968d1
|
|
3
|
-
MonoImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
defaultReferences: []
|
|
7
|
-
executionOrder: 0
|
|
8
|
-
icon: {instanceID: 0}
|
|
9
|
-
userData:
|
|
10
|
-
assetBundleName:
|
|
11
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 5587137b550131b4599b2165976968d1
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|
package/TMPMarquee.cs
CHANGED
|
@@ -1,178 +1,178 @@
|
|
|
1
|
-
//OG Author: KHeartz. My Magic Man
|
|
2
|
-
//Edited Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
3
|
-
using System.Collections;
|
|
4
|
-
using UnityEngine;
|
|
5
|
-
|
|
6
|
-
namespace DREditor.TextDisplaying
|
|
7
|
-
{
|
|
8
|
-
/// <summary>
|
|
9
|
-
///
|
|
10
|
-
/// </summary>
|
|
11
|
-
[ClassHeader(nameof(TMPMarqueeBase) +
|
|
12
|
-
"\n\n")]
|
|
13
|
-
public class TMPMarquee : TMPMarqueeBase
|
|
14
|
-
{
|
|
15
|
-
/// <summary>
|
|
16
|
-
///
|
|
17
|
-
/// </summary>
|
|
18
|
-
[Tooltip("")]
|
|
19
|
-
[SerializeField] protected float scrollDuration = 5;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/// <summary>
|
|
23
|
-
///
|
|
24
|
-
/// </summary>
|
|
25
|
-
protected float currentWidth;
|
|
26
|
-
|
|
27
|
-
/// <summary>
|
|
28
|
-
///
|
|
29
|
-
/// </summary>
|
|
30
|
-
protected float startX;
|
|
31
|
-
|
|
32
|
-
/// <summary>
|
|
33
|
-
///
|
|
34
|
-
/// </summary>
|
|
35
|
-
protected float elapsedSeconds;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
/// <inheritdoc/>
|
|
39
|
-
protected override void Initialize()
|
|
40
|
-
{
|
|
41
|
-
ResetPosition();
|
|
42
|
-
|
|
43
|
-
ForceUpdateWidth();
|
|
44
|
-
|
|
45
|
-
ResetCalculatedVariables();
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/// <summary>
|
|
49
|
-
///
|
|
50
|
-
/// </summary>
|
|
51
|
-
protected virtual void ResetPosition() => marqueeTransform.localPosition = new(parentMask.rect.xMax, 0, 0);
|
|
52
|
-
|
|
53
|
-
/// <summary>
|
|
54
|
-
///
|
|
55
|
-
/// </summary>
|
|
56
|
-
protected virtual void ForceUpdateWidth()
|
|
57
|
-
{
|
|
58
|
-
tmp.ForceMeshUpdate();
|
|
59
|
-
|
|
60
|
-
currentWidth = tmp.rectTransform.rect.width;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/// <summary>
|
|
64
|
-
///
|
|
65
|
-
/// </summary>
|
|
66
|
-
protected virtual void ResetCalculatedVariables()
|
|
67
|
-
{
|
|
68
|
-
startX = marqueeTransform.localPosition.x;
|
|
69
|
-
|
|
70
|
-
elapsedSeconds = 0f;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
/// <inheritdoc/>
|
|
75
|
-
protected override IEnumerator MarqueeRoutine()
|
|
76
|
-
{
|
|
77
|
-
while (true)
|
|
78
|
-
{
|
|
79
|
-
Initialize();
|
|
80
|
-
|
|
81
|
-
while (MarqueeUpdated())
|
|
82
|
-
yield return null;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/// <summary>
|
|
87
|
-
///
|
|
88
|
-
/// </summary>
|
|
89
|
-
/// <returns></returns>
|
|
90
|
-
/// <remarks></remarks>
|
|
91
|
-
protected virtual bool MarqueeUpdated()
|
|
92
|
-
{
|
|
93
|
-
bool result = ShouldBeScrolling();
|
|
94
|
-
|
|
95
|
-
if (result)
|
|
96
|
-
UpdateScroll();
|
|
97
|
-
|
|
98
|
-
return result;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/// <summary>
|
|
102
|
-
///
|
|
103
|
-
/// </summary>
|
|
104
|
-
/// <returns></returns>
|
|
105
|
-
protected virtual bool ShouldBeScrolling() => elapsedSeconds < scrollDuration;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
/// <summary>
|
|
109
|
-
///
|
|
110
|
-
/// </summary>
|
|
111
|
-
protected virtual void UpdateScroll()
|
|
112
|
-
{
|
|
113
|
-
CheckWidthChanged();
|
|
114
|
-
|
|
115
|
-
TickElapsed();
|
|
116
|
-
|
|
117
|
-
UpdatePosition();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/// <summary>
|
|
121
|
-
///
|
|
122
|
-
/// </summary>
|
|
123
|
-
protected virtual void CheckWidthChanged()
|
|
124
|
-
{
|
|
125
|
-
if (WidthHasChanged())
|
|
126
|
-
{
|
|
127
|
-
ForceUpdateWidth();
|
|
128
|
-
|
|
129
|
-
CalculateElapsedSeconds();
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/// <summary>
|
|
134
|
-
///
|
|
135
|
-
/// </summary>
|
|
136
|
-
/// <returns></returns>
|
|
137
|
-
protected virtual bool WidthHasChanged() => Mathf.Abs(tmp.rectTransform.rect.width - currentWidth) > 0.1f;
|
|
138
|
-
|
|
139
|
-
/// <summary>
|
|
140
|
-
///
|
|
141
|
-
/// </summary>
|
|
142
|
-
protected virtual void CalculateElapsedSeconds()
|
|
143
|
-
{
|
|
144
|
-
float currentX = marqueeTransform.localPosition.x;
|
|
145
|
-
|
|
146
|
-
float totalDistance = startX - ScrollEndXPosition();
|
|
147
|
-
|
|
148
|
-
float remainingDistance = currentX - ScrollEndXPosition();
|
|
149
|
-
|
|
150
|
-
float progress = 1f - (remainingDistance / totalDistance);
|
|
151
|
-
|
|
152
|
-
elapsedSeconds = progress * scrollDuration;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/// <summary>
|
|
156
|
-
///
|
|
157
|
-
/// </summary>
|
|
158
|
-
/// <returns></returns>
|
|
159
|
-
protected virtual float ScrollEndXPosition() => parentMask.rect.xMin - tmp.rectTransform.rect.width;
|
|
160
|
-
|
|
161
|
-
/// <summary>
|
|
162
|
-
///
|
|
163
|
-
/// </summary>
|
|
164
|
-
protected virtual void TickElapsed() => elapsedSeconds += Time.deltaTime;
|
|
165
|
-
|
|
166
|
-
/// <summary>
|
|
167
|
-
///
|
|
168
|
-
/// </summary>
|
|
169
|
-
protected virtual void UpdatePosition()
|
|
170
|
-
{
|
|
171
|
-
float interpolationPercentage = Mathf.Clamp01(elapsedSeconds / scrollDuration);
|
|
172
|
-
|
|
173
|
-
float calculatedX = Mathf.Lerp(startX, ScrollEndXPosition(), interpolationPercentage);
|
|
174
|
-
|
|
175
|
-
marqueeTransform.localPosition = new Vector3(calculatedX, 0, 0);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
1
|
+
//OG Author: KHeartz. My Magic Man
|
|
2
|
+
//Edited Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
3
|
+
using System.Collections;
|
|
4
|
+
using UnityEngine;
|
|
5
|
+
|
|
6
|
+
namespace DREditor.TextDisplaying
|
|
7
|
+
{
|
|
8
|
+
/// <summary>
|
|
9
|
+
///
|
|
10
|
+
/// </summary>
|
|
11
|
+
[ClassHeader(nameof(TMPMarqueeBase) +
|
|
12
|
+
"\n\n")]
|
|
13
|
+
public class TMPMarquee : TMPMarqueeBase
|
|
14
|
+
{
|
|
15
|
+
/// <summary>
|
|
16
|
+
///
|
|
17
|
+
/// </summary>
|
|
18
|
+
[Tooltip("")]
|
|
19
|
+
[SerializeField] protected float scrollDuration = 5;
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
/// <summary>
|
|
23
|
+
///
|
|
24
|
+
/// </summary>
|
|
25
|
+
protected float currentWidth;
|
|
26
|
+
|
|
27
|
+
/// <summary>
|
|
28
|
+
///
|
|
29
|
+
/// </summary>
|
|
30
|
+
protected float startX;
|
|
31
|
+
|
|
32
|
+
/// <summary>
|
|
33
|
+
///
|
|
34
|
+
/// </summary>
|
|
35
|
+
protected float elapsedSeconds;
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
/// <inheritdoc/>
|
|
39
|
+
protected override void Initialize()
|
|
40
|
+
{
|
|
41
|
+
ResetPosition();
|
|
42
|
+
|
|
43
|
+
ForceUpdateWidth();
|
|
44
|
+
|
|
45
|
+
ResetCalculatedVariables();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/// <summary>
|
|
49
|
+
///
|
|
50
|
+
/// </summary>
|
|
51
|
+
protected virtual void ResetPosition() => marqueeTransform.localPosition = new(parentMask.rect.xMax, 0, 0);
|
|
52
|
+
|
|
53
|
+
/// <summary>
|
|
54
|
+
///
|
|
55
|
+
/// </summary>
|
|
56
|
+
protected virtual void ForceUpdateWidth()
|
|
57
|
+
{
|
|
58
|
+
tmp.ForceMeshUpdate();
|
|
59
|
+
|
|
60
|
+
currentWidth = tmp.rectTransform.rect.width;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/// <summary>
|
|
64
|
+
///
|
|
65
|
+
/// </summary>
|
|
66
|
+
protected virtual void ResetCalculatedVariables()
|
|
67
|
+
{
|
|
68
|
+
startX = marqueeTransform.localPosition.x;
|
|
69
|
+
|
|
70
|
+
elapsedSeconds = 0f;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
/// <inheritdoc/>
|
|
75
|
+
protected override IEnumerator MarqueeRoutine()
|
|
76
|
+
{
|
|
77
|
+
while (true)
|
|
78
|
+
{
|
|
79
|
+
Initialize();
|
|
80
|
+
|
|
81
|
+
while (MarqueeUpdated())
|
|
82
|
+
yield return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/// <summary>
|
|
87
|
+
///
|
|
88
|
+
/// </summary>
|
|
89
|
+
/// <returns></returns>
|
|
90
|
+
/// <remarks></remarks>
|
|
91
|
+
protected virtual bool MarqueeUpdated()
|
|
92
|
+
{
|
|
93
|
+
bool result = ShouldBeScrolling();
|
|
94
|
+
|
|
95
|
+
if (result)
|
|
96
|
+
UpdateScroll();
|
|
97
|
+
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/// <summary>
|
|
102
|
+
///
|
|
103
|
+
/// </summary>
|
|
104
|
+
/// <returns></returns>
|
|
105
|
+
protected virtual bool ShouldBeScrolling() => elapsedSeconds < scrollDuration;
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
/// <summary>
|
|
109
|
+
///
|
|
110
|
+
/// </summary>
|
|
111
|
+
protected virtual void UpdateScroll()
|
|
112
|
+
{
|
|
113
|
+
CheckWidthChanged();
|
|
114
|
+
|
|
115
|
+
TickElapsed();
|
|
116
|
+
|
|
117
|
+
UpdatePosition();
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/// <summary>
|
|
121
|
+
///
|
|
122
|
+
/// </summary>
|
|
123
|
+
protected virtual void CheckWidthChanged()
|
|
124
|
+
{
|
|
125
|
+
if (WidthHasChanged())
|
|
126
|
+
{
|
|
127
|
+
ForceUpdateWidth();
|
|
128
|
+
|
|
129
|
+
CalculateElapsedSeconds();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/// <summary>
|
|
134
|
+
///
|
|
135
|
+
/// </summary>
|
|
136
|
+
/// <returns></returns>
|
|
137
|
+
protected virtual bool WidthHasChanged() => Mathf.Abs(tmp.rectTransform.rect.width - currentWidth) > 0.1f;
|
|
138
|
+
|
|
139
|
+
/// <summary>
|
|
140
|
+
///
|
|
141
|
+
/// </summary>
|
|
142
|
+
protected virtual void CalculateElapsedSeconds()
|
|
143
|
+
{
|
|
144
|
+
float currentX = marqueeTransform.localPosition.x;
|
|
145
|
+
|
|
146
|
+
float totalDistance = startX - ScrollEndXPosition();
|
|
147
|
+
|
|
148
|
+
float remainingDistance = currentX - ScrollEndXPosition();
|
|
149
|
+
|
|
150
|
+
float progress = 1f - (remainingDistance / totalDistance);
|
|
151
|
+
|
|
152
|
+
elapsedSeconds = progress * scrollDuration;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/// <summary>
|
|
156
|
+
///
|
|
157
|
+
/// </summary>
|
|
158
|
+
/// <returns></returns>
|
|
159
|
+
protected virtual float ScrollEndXPosition() => parentMask.rect.xMin - tmp.rectTransform.rect.width;
|
|
160
|
+
|
|
161
|
+
/// <summary>
|
|
162
|
+
///
|
|
163
|
+
/// </summary>
|
|
164
|
+
protected virtual void TickElapsed() => elapsedSeconds += Time.deltaTime;
|
|
165
|
+
|
|
166
|
+
/// <summary>
|
|
167
|
+
///
|
|
168
|
+
/// </summary>
|
|
169
|
+
protected virtual void UpdatePosition()
|
|
170
|
+
{
|
|
171
|
+
float interpolationPercentage = Mathf.Clamp01(elapsedSeconds / scrollDuration);
|
|
172
|
+
|
|
173
|
+
float calculatedX = Mathf.Lerp(startX, ScrollEndXPosition(), interpolationPercentage);
|
|
174
|
+
|
|
175
|
+
marqueeTransform.localPosition = new Vector3(calculatedX, 0, 0);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
178
|
}
|
package/TMPMarquee.cs.meta
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 78221e5b1a4c50a44ac3a897b2e6d4a9
|
|
3
|
-
MonoImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
defaultReferences: []
|
|
7
|
-
executionOrder: 0
|
|
8
|
-
icon: {instanceID: 0}
|
|
9
|
-
userData:
|
|
10
|
-
assetBundleName:
|
|
11
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 78221e5b1a4c50a44ac3a897b2e6d4a9
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|