63 lines
4.5 KiB
C++
63 lines
4.5 KiB
C++
#pragma once
|
|
#include "DeerRender/Log.h"
|
|
#include "angelscript.h"
|
|
|
|
namespace Deer {
|
|
namespace Scripting {
|
|
const char* getAngelScriptReturnCodeString(int code);
|
|
bool ImplementsInterface(asITypeInfo* type, asITypeInfo* iface);
|
|
} // namespace Scripting
|
|
} // namespace Deer
|
|
|
|
#define REGISTER_GLOBAL_FUNC(scriptEngine, funcdef, func) \
|
|
AS_CHECK(scriptEngine->RegisterGlobalFunction( \
|
|
funcdef, \
|
|
asFUNCTION(func), asCALL_CDECL))
|
|
|
|
#define REGISTER_OBJECT_METHOD(scriptEngine, clasdef, funcdef, clas, func) \
|
|
AS_CHECK(scriptEngine->RegisterObjectMethod( \
|
|
clasdef, funcdef, \
|
|
asMETHOD(clas, func), asCALL_THISCALL))
|
|
|
|
#define REGISTER_EXT_OBJECT_METHOD(scriptEngine, clasdef, funcdef, func) \
|
|
AS_CHECK(scriptEngine->RegisterObjectMethod( \
|
|
clasdef, funcdef, \
|
|
asFUNCTION(func), asCALL_CDECL_OBJLAST))
|
|
|
|
#define REGISTER_GENERIC_OBJECT_METHOD(scriptEngine, clasdef, funcdef, func) \
|
|
AS_CHECK(scriptEngine->RegisterObjectMethod( \
|
|
clasdef, funcdef, \
|
|
asFUNCTION(func), asCALL_GENERIC))
|
|
|
|
#define REGISTER_EXT_OBJECT_CONSTRUCTOR(scriptEngine, clasdef, funcdef, func) \
|
|
AS_CHECK(scriptEngine->RegisterObjectBehaviour( \
|
|
clasdef, asBEHAVE_CONSTRUCT, funcdef, \
|
|
asFUNCTION(func), asCALL_CDECL_OBJLAST))
|
|
#define REGISTER_EXT_OBJECT_DESTRUCTOR(scriptEngine, clasdef, funcdef, func) \
|
|
AS_CHECK(scriptEngine->RegisterObjectBehaviour( \
|
|
clasdef, asBEHAVE_DESTRUCT, funcdef, \
|
|
asFUNCTION(func), asCALL_CDECL_OBJLAST))
|
|
|
|
#define AS_CHECK(f) \
|
|
{ \
|
|
int __r = f; \
|
|
if (__r < 0) { \
|
|
DEER_EDITOR_ENGINE_ERROR("Error at line: {0}:{1} -> {2}", __FILE__, __LINE__, Deer::Scripting::getAngelScriptReturnCodeString(__r)); \
|
|
} \
|
|
}
|
|
#define AS_CHECK_ADDITIONAL_INFO(f, i) \
|
|
{ \
|
|
int __r = f; \
|
|
if (__r < 0) { \
|
|
DEER_EDITOR_ENGINE_ERROR("Error at line: {0}:{1} -> {2} \n {3}", __FILE__, __LINE__, Deer::Scripting::getAngelScriptReturnCodeString(__r), i); \
|
|
} \
|
|
}
|
|
#define AS_RET_CHECK(f) \
|
|
{ \
|
|
int __r = f; \
|
|
if (__r < 0) { \
|
|
DEER_EDITOR_ENGINE_ERROR("Error at line: {0}:{1} -> {2}", __FILE__, __LINE__, Deer::Scripting::getAngelScriptReturnCodeString(__r)); \
|
|
return; \
|
|
} \
|
|
}
|