28 lines
		
	
	
	
		
			485 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
	
		
			485 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
#include <ecs/components/scriptable_entity.hpp>
 | 
						|
 | 
						|
namespace lt {
 | 
						|
 | 
						|
struct NativeScriptComponent
 | 
						|
{
 | 
						|
	NativeScript *(*CreateInstance)();
 | 
						|
 | 
						|
	void (*DestroyInstance)(NativeScriptComponent *);
 | 
						|
 | 
						|
	template<typename t>
 | 
						|
	void bind()
 | 
						|
	{
 | 
						|
		CreateInstance = []() {
 | 
						|
			return static_cast<NativeScript *>(new t());
 | 
						|
		};
 | 
						|
		DestroyInstance = [](NativeScriptComponent *nsc) {
 | 
						|
			delete (t *)(nsc->instance);
 | 
						|
			nsc->instance = nullptr;
 | 
						|
		};
 | 
						|
	}
 | 
						|
 | 
						|
	NativeScript *instance;
 | 
						|
};
 | 
						|
 | 
						|
} // namespace lt
 |