Fixed typo in Thread and functions now return the correct type
Table provides two commonly used functions Clone & Reconcile
SignalManager is used to help manage signal connections
function Character.new(instance)
local self = Global.Metatable(Character) :: Global.Character
-- Create a SignalManager and connect two signals
self.Signals = Global.SignalManager()
self.Signals:Connect(instance.AttributeChanged, Character.AttributeChanged, self)
self.Signals:Connect(instance.AnimationController.Animator.AnimationPlayed, Character.AnimationPlayed, self)
return self
end
function Character:AttributeChanged(attribute)
print(attribute)
end
function Character:AnimationPlayed(animationTrack)
print(animationTrack)
end
function Character:Destroy()
-- Disconnect all signals from the SignalManager
self.Signals:DisconnectAll()
end
Removed <P> generic from ParameterEvent, ParameterTimer and SignalManager because there where some small edge cases where the type checking engine would fail
Added Table2D and Table3D
-- Make a 2d table that has string values and number keys
local table2D = Global.Table2D()-- :: Global.Table2D<string, number>
-- Add ABC to index 5x2
table2D:Set(5, 2, "ABC")
print(table2D:Get(5, 2))
-- Remove ABC from index 5x2
table2D:Set(5, 2, nil)
I noticed that this also happens even with a regular script, when you put a return at itās last line. Not something that I would do normally, Just something that I found randomly, wanted to let you know
I just tested this for myself and everything worked perfectly fine with a return at the bottom of a script so Iām guessing the problem you experienced was with something else
Oh strange, I tried reproducing it as well again and it seems to be working fine. Must have been something else like you said. Unfortunately I no longer have the project file with the bug I mentioned earlier. Iāll let you know if I find it again
^
I want to use FastSignal module with this framework. However, to use this moduleās types properly, I must require it before the globalās types are set.
The reason Iām requiring modules and setting itās types manually, as shown above, is because it is currently difficult to add types using the bracket comments method with modules that donāt have the global framework in mind. For example, Iām using Trove which is a cleanup module by Sleitnick. In order to add the Trove type through the bracket comments method provided by the plugin, I would need to heavily modify the original code, as Trove has a multitude of types it uses within it.
To get around this and simplify the process, inside the global framework module under the ālocal globals = {}ā line, I require the trove module and simply get its type though there. And then afterwards I can use the Trove type though the Global framework normally. Currently this is the only place where edits to the module are not overwritten by the plugin.
This works fine with trove, However with FastSignal its a different story since it uses generics.
^ If I attempt to do this with the method I talked about, then every time I try to use the FastSignal type through Global, I canāt input my own arguments inside the <> brackets.
To be able to use the generics and global framework properly, I need to require FastSignal before the Globalās types are set. That way in my other scripts I can do the following: