#pragma once #include namespace lt { struct NativeScriptComponent { NativeScript *(*CreateInstance)(); void (*DestroyInstance)(NativeScriptComponent *); template void bind() { CreateInstance = []() { return static_cast(new t()); }; DestroyInstance = [](NativeScriptComponent *nsc) { delete (t *)(nsc->instance); nsc->instance = nullptr; }; } NativeScript *instance; }; } // namespace lt