Skip to content

Commit 1d190bc

Browse files
committed
Tickables extension
1 parent 291f475 commit 1d190bc

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

Runtime/Di/Extensions/DiTickablesExtensions.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Juce.Core.Di.Builder;
22
using Juce.Core.Tickable;
33
using Juce.CoreUnity.Tickables;
4+
using System;
45

56
namespace JuceUnity.Core.Di.Extensions
67
{
@@ -25,5 +26,30 @@ public static IDiBindingActionBuilder<T> LinkToTickablesService<T>(this IDiBindi
2526

2627
return actionBuilder;
2728
}
29+
30+
public static IDiBindingActionBuilder<T> LinkToTickablesService<T>(this IDiBindingActionBuilder<T> actionBuilder, Func<T, Action> func)
31+
{
32+
CallbackTickable callbackTickable = null;
33+
34+
actionBuilder.WhenInit((c, o) =>
35+
{
36+
Action action = func.Invoke(o);
37+
38+
callbackTickable = new CallbackTickable(action);
39+
40+
ITickablesService tickablesService = c.Resolve<ITickablesService>();
41+
42+
tickablesService.Add(callbackTickable);
43+
});
44+
45+
actionBuilder.WhenDispose((c, o) =>
46+
{
47+
ITickablesService tickablesService = c.Resolve<ITickablesService>();
48+
49+
tickablesService.Remove(callbackTickable);
50+
});
51+
52+
return actionBuilder;
53+
}
2854
}
2955
}

0 commit comments

Comments
 (0)