@@ -16,6 +16,7 @@ public class MessageFeed : MonoBehaviour
1616 UIDocument doc ;
1717
1818 List < MessageViewModel > m_Messages ;
19+ List < MessageViewModel > _messagesToRemove = new List < MessageViewModel > ( ) ;
1920
2021 ListView m_MessageContainer ;
2122
@@ -102,6 +103,7 @@ public void AddMessage()
102103 ShowMessage ( $ "Hello! { DateTime . Now . Millisecond } ") ;
103104 }
104105
106+ //would be much nicer if this would be a custom control, and we'd do this in an attach to panel event
105107 void Start ( )
106108 {
107109 var root = doc . rootVisualElement ;
@@ -118,16 +120,11 @@ void Start()
118120 var newBox = new VisualElement ( ) ;
119121 newBox . AddToClassList ( "messageBox" ) ;
120122
121- //newBox.style.position = Position.Absolute; // Explicitly position it
122-
123- // Position the new message box below the last message
124- //newBox.style.top = m_MessageContainer.childCount * (messageHeight + verticalSpacing);
125-
126123 var newLabel = new Label ( ) ;
127124 newLabel . AddToClassList ( "message" ) ;
128125 newBox . Add ( newLabel ) ;
129126
130- // the even when the control get's added to the "UI Canvas"
127+ // the event when the control get's added to the "UI Canvas"
131128 newBox . RegisterCallback < AttachToPanelEvent > ( ( e ) =>
132129 {
133130 if ( e . target is VisualElement element )
@@ -137,7 +134,7 @@ void Start()
137134 }
138135 } ) ;
139136
140- // fires before the element is actually removed
137+ // fires just before the element is actually removed
141138 newBox . RegisterCallback < DetachFromPanelEvent > ( ( e ) =>
142139 {
143140 if ( e . target is VisualElement ) { }
@@ -182,7 +179,6 @@ void OnDestroy()
182179 }
183180 }
184181
185- List < MessageViewModel > _messagesToRemove = new List < MessageViewModel > ( ) ;
186182
187183 void Update ( )
188184 {
@@ -219,21 +215,6 @@ void Update()
219215
220216 void ShowMessage ( string message )
221217 {
222- // Reuse or create a new message
223- // MessageViewModel newMessage = null;
224-
225- // a list view's virtualization logic actually takes care of this by default
226- /*
227- foreach (var m in m_Messages)
228- {
229- if (!m.isShown)
230- {
231- // Reuse the hidden message
232- newMessage = m;
233- break;
234- }
235- }
236- */
237218 var newMessage = new MessageViewModel ( message , TimeSpan . FromSeconds ( 5 ) ) ;
238219
239220 m_Messages . Add ( newMessage ) ; // Add to the list of messages
@@ -246,22 +227,6 @@ IEnumerator ToggleClassWithDelay(VisualElement element, string className, TimeSp
246227 element . ToggleInClassList ( className ) ;
247228 }
248229
249-
250- static void StartFadeout ( VisualElement message , float opacity )
251- {
252- message . schedule . Execute ( ( ) =>
253- {
254- opacity -= 0.01f ;
255- message . style . opacity = opacity ;
256-
257- if ( opacity <= 0 )
258- {
259- // Once faded out fully, hide the message and reset state
260- message . style . display = DisplayStyle . None ;
261- }
262- } ) . Every ( ( long ) 0.1f ) . Until ( ( ) => opacity <= 0 ) ;
263- }
264-
265230
266231 // if you bind the itemsource to the list you don't actually have to manually do this
267232 private class MessageViewModel
0 commit comments