+ "examples": "Register a new type:\n<div class=\"codehilite\"><pre><span></span><span class=\"k\">static</span> <span class=\"n\">dmResource</span><span class=\"o\">::</span><span class=\"n\">Result</span> <span class=\"n\">ResourceTypeScriptCreate</span><span class=\"p\">(...)</span> <span class=\"p\">{}</span>\n<span class=\"k\">static</span> <span class=\"n\">dmResource</span><span class=\"o\">::</span><span class=\"n\">Result</span> <span class=\"n\">ResourceTypeScriptDestroy</span><span class=\"p\">(...)</span> <span class=\"p\">{}</span>\n<span class=\"k\">static</span> <span class=\"n\">dmResource</span><span class=\"o\">::</span><span class=\"n\">Result</span> <span class=\"n\">ResourceTypeScriptRecreate</span><span class=\"p\">(...)</span> <span class=\"p\">{}</span>\n\n<span class=\"k\">struct</span> <span class=\"n\">BlobContext</span>\n<span class=\"p\">{</span>\n <span class=\"p\">...</span>\n<span class=\"p\">};</span>\n\n<span class=\"k\">static</span> <span class=\"n\">dmResource</span><span class=\"o\">::</span><span class=\"n\">Result</span> <span class=\"n\">RegisterResourceTypeBlob</span><span class=\"p\">(</span><span class=\"n\">ResourceTypeRegisterContext</span><span class=\"o\">&</span> <span class=\"n\">ctx</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n <span class=\"c1\">// The engine.cpp creates the contexts for our built in types.</span>\n <span class=\"c1\">// Here we register a custom type</span>\n <span class=\"n\">BlobContext</span><span class=\"o\">*</span> <span class=\"n\">context</span> <span class=\"o\">=</span> <span class=\"k\">new</span> <span class=\"n\">BlobContext</span><span class=\"p\">;</span>\n <span class=\"n\">ctx</span><span class=\"p\">.</span><span class=\"n\">m_Contexts</span><span class=\"p\">.</span><span class=\"n\">Put</span><span class=\"p\">(</span><span class=\"n\">ctx</span><span class=\"p\">.</span><span class=\"n\">m_NameHash</span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">void</span><span class=\"o\">*</span><span class=\"p\">)</span><span class=\"n\">context</span><span class=\"p\">);</span>\n\n <span class=\"k\">return</span> <span class=\"n\">dmResource</span><span class=\"o\">::</span><span class=\"n\">RegisterType</span><span class=\"p\">(</span><span class=\"n\">ctx</span><span class=\"p\">.</span><span class=\"n\">m_Factory</span><span class=\"p\">,</span>\n <span class=\"n\">ctx</span><span class=\"p\">.</span><span class=\"n\">m_Name</span><span class=\"p\">,</span>\n <span class=\"n\">context</span><span class=\"p\">,</span>\n <span class=\"mi\">0</span><span class=\"p\">,</span>\n <span class=\"n\">ResourceTypeScriptCreate</span><span class=\"p\">,</span>\n <span class=\"mi\">0</span><span class=\"p\">,</span>\n <span class=\"n\">ResourceTypeScriptDestroy</span><span class=\"p\">,</span>\n <span class=\"n\">ResourceTypeScriptRecreate</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n\n<span class=\"k\">static</span> <span class=\"n\">dmResource</span><span class=\"o\">::</span><span class=\"n\">Result</span> <span class=\"n\">DeregisterResourceTypeScript</span><span class=\"p\">(</span><span class=\"n\">ResourceTypeRegisterContext</span><span class=\"o\">&</span> <span class=\"n\">ctx</span><span class=\"p\">)</span>\n<span class=\"p\">{</span>\n <span class=\"n\">BlobContext</span><span class=\"o\">**</span> <span class=\"n\">context</span> <span class=\"o\">=</span> <span class=\"p\">(</span><span class=\"n\">BlobContext</span><span class=\"o\">**</span><span class=\"p\">)</span><span class=\"n\">ctx</span><span class=\"p\">.</span><span class=\"n\">m_Contexts</span><span class=\"p\">.</span><span class=\"n\">Get</span><span class=\"p\">(</span><span class=\"n\">ctx</span><span class=\"p\">.</span><span class=\"n\">m_NameHash</span><span class=\"p\">);</span>\n <span class=\"k\">delete</span> <span class=\"o\">*</span><span class=\"n\">context</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n\n\n<span class=\"n\">DM_DECLARE_RESOURCE_TYPE</span><span class=\"p\">(</span><span class=\"n\">ResourceTypeBlob</span><span class=\"p\">,</span> <span class=\"s\">"blobc"</span><span class=\"p\">,</span> <span class=\"n\">RegisterResourceTypeBlob</span><span class=\"p\">,</span> <span class=\"n\">DeregisterResourceTypeScript</span><span class=\"p\">);</span>\n</pre></div>",
0 commit comments