| 1756 | #if USE_EDITOR |
| 1757 | |
| 1758 | void 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 |
nothing calls this directly
no test coverage detected