MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / OnScriptsReloading

Method OnScriptsReloading

Source/Engine/Content/Assets/VisualScript.cpp:1758–1804  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1756#if USE_EDITOR
1757
1758void VisualScriptingBinaryModule::OnScriptsReloading()
1759{
1760 PROFILE_MEM(ScriptingVisual);
1761
1762 // Clear any cached types from that module across all loaded Visual Scripts
1763 for (auto& script : Scripts)
1764 {
1765 if (!script || !script->IsLoaded())
1766 continue;
1767 ScopeLock lock(script->Locker);
1768
1769 // Clear cached types (underlying base class could be in reloaded C# scripts)
1770 if (script->_scriptingTypeHandle)
1771 {
1772 auto& type = VisualScriptingModule.Types[script->_scriptingTypeHandle.TypeIndex];
1773 if (type.Script.DefaultInstance)
1774 {
1775 Delete(type.Script.DefaultInstance);
1776 type.Script.DefaultInstance = nullptr;
1777 }
1778 VisualScriptingModule.TypeNameToTypeIndex.RemoveValue(script->_scriptingTypeHandle.TypeIndex);
1779 script->_scriptingTypeHandleCached = script->_scriptingTypeHandle;
1780 script->_scriptingTypeHandle = ScriptingTypeHandle();
1781 }
1782
1783 // Clear methods cache
1784 for (auto& node : script->Graph.Nodes)
1785 {
1786 switch (node.Type)
1787 {
1788 // Invoke Method
1789 case GRAPH_NODE_MAKE_TYPE(16, 4):
1790 {
1791 node.Data.InvokeMethod.Method = nullptr;
1792 break;
1793 }
1794 // Get/Set Field
1795 case GRAPH_NODE_MAKE_TYPE(16, 7):
1796 case GRAPH_NODE_MAKE_TYPE(16, 8):
1797 {
1798 node.Data.GetSetField.Field = nullptr;
1799 break;
1800 }
1801 }
1802 }
1803 }
1804}
1805
1806#endif
1807

Callers

nothing calls this directly

Calls 3

DeleteFunction · 0.85
ScriptingTypeHandleClass · 0.50
IsLoadedMethod · 0.45

Tested by

no test coverage detected