int QAS_Init( void ) { angelwrappool = QAS_MemAllocPool( "Angelwrap script module" ); QAS_Printf( "Initializing Angel Script\n" ); QAS_InitAngelExport(); return 1; }
int qasCreateScriptEngine( qboolean *as_max_portability ) { enginehandle_t *eh; asIScriptEngine *engine; // register the global memory allocation and deallocation functions asSetGlobalMemoryFunctions( qasAlloc, qasFree ); // always new // ask for angelscript initialization and script engine creation engine = asCreateScriptEngine( ANGELSCRIPT_VERSION ); if( !engine ) return -1; eh = ( enginehandle_t * )QAS_Malloc( sizeof( enginehandle_t ) ); eh->handle = numRegisteredEngines++; eh->next = engineHandlesHead; engineHandlesHead = eh; eh->engine = engine; eh->max_portability = qfalse; if( strstr( asGetLibraryOptions(), "AS_MAX_PORTABILITY" ) ) { QAS_Printf( "* angelscript library with AS_MAX_PORTABILITY detected\n" ); eh->max_portability = qtrue; } if( as_max_portability ) *as_max_portability = eh->max_portability; // The script compiler will write any compiler messages to the callback. eh->engine->SetMessageCallback( asFUNCTION( qasGenericMessageCallback ), 0, asCALL_CDECL ); PreRegisterMathAddon( engine ); PreRegisterScriptArrayAddon( engine, true ); PreRegisterStringAddon( engine ); PreRegisterDictionaryAddon( engine ); PreRegisterTimeAddon( engine ); PreRegisterScriptAny( engine ); PreRegisterVec3Addon( engine ); PreRegisterCvarAddon( engine ); PreRegisterStringUtilsAddon( engine ); RegisterMathAddon( engine ); RegisterScriptArrayAddon( engine, true ); RegisterStringAddon( engine ); RegisterDictionaryAddon( engine ); RegisterTimeAddon( engine ); RegisterScriptAny( engine ); RegisterVec3Addon( engine ); RegisterCvarAddon( engine ); RegisterStringUtilsAddon( engine ); return eh->handle; }
static void qasGenericMessageCallback( const struct asSMessageInfo *msg, void *param ) { const char *type = "ERROR"; if( msg->type == asMSGTYPE_WARNING ) type = "WARNING"; else if( msg->type == asMSGTYPE_INFORMATION ) type = "INFO"; QAS_Printf( "\n%s : %s (line %d, column %d) :\n %s\n", type, msg->section, msg->row, msg->col, msg->message ); }
asIScriptEngine *qasCreateEngine( bool *asMaxPortability ) { asIScriptEngine *engine; // register the global memory allocation and deallocation functions asSetGlobalMemoryFunctions( qasAlloc, qasFree ); // always new // ask for angelscript initialization and script engine creation engine = asCreateScriptEngine( ANGELSCRIPT_VERSION ); if( !engine ) return NULL; if( strstr( asGetLibraryOptions(), "AS_MAX_PORTABILITY" ) ) { QAS_Printf( "* angelscript library with AS_MAX_PORTABILITY detected\n" ); engine->Release(); return NULL; } *asMaxPortability = false; // The script compiler will write any compiler messages to the callback. engine->SetMessageCallback( asFUNCTION( qasMessageCallback ), 0, asCALL_CDECL ); engine->SetEngineProperty( asEP_ALWAYS_IMPL_DEFAULT_CONSTRUCT, 1 ); PreRegisterMathAddon( engine ); PreRegisterScriptArray( engine, true ); PreRegisterStringAddon( engine ); PreRegisterScriptDictionary( engine ); PreRegisterTimeAddon( engine ); PreRegisterScriptAny( engine ); PreRegisterVec3Addon( engine ); PreRegisterCvarAddon( engine ); PreRegisterStringUtilsAddon( engine ); RegisterMathAddon( engine ); RegisterScriptArray( engine, true ); RegisterStringAddon( engine ); RegisterScriptDictionary( engine ); RegisterTimeAddon( engine ); RegisterScriptAny( engine ); RegisterVec3Addon( engine ); RegisterCvarAddon( engine ); RegisterStringUtilsAddon( engine ); return engine; }
int qasRegisterGlobalProperty( int engineHandle, const char *declaration, void *pointer ) { enginehandle_t *eh; int error; eh = qasGetEngineHandle( engineHandle ); if( !eh ) return QASINVALIDHANDLE; error = eh->engine->RegisterGlobalProperty( declaration, pointer ); if( error < 0 ) QAS_Printf( "WARNING: AScript GlobalProperty '%s' failed to register with error %i\n", declaration, error ); return error; }
int qasRegisterObjectProperty( int engineHandle, const char *objname, const char *declaration, int byteOffset ) { enginehandle_t *eh; int error; eh = qasGetEngineHandle( engineHandle ); if( !eh ) return QASINVALIDHANDLE; error = eh->engine->RegisterObjectProperty( objname, declaration, byteOffset ); if( error < 0 ) QAS_Printf( "WARNING: AScript property '%s' in object '%s' failed to register with error %i\n", declaration, objname, error ); return error; }
int qasRegisterObjectType( int engineHandle, const char *name, int byteSize, unsigned int flags ) { int error; enginehandle_t *eh; eh = qasGetEngineHandle( engineHandle ); if( !eh ) return QASINVALIDHANDLE; error = eh->engine->RegisterObjectType( name, byteSize, (asDWORD)flags ); if( error < 0 ) QAS_Printf( "WARNING: AScript object '%s' failed to register with error %i\n", name, error ); return error; }
int qasRegisterGlobalFunction( int engineHandle, const char *declaration, const void *funcPointer, int callConv ) { enginehandle_t *eh; int error; eh = qasGetEngineHandle( engineHandle ); if( !eh ) return QASINVALIDHANDLE; if( eh->max_portability ) return QASINVALIDHANDLE; else error = eh->engine->RegisterGlobalFunction( declaration, asFUNCTION(funcPointer), (asDWORD)callConv ); if( error < 0 ) QAS_Printf( "WARNING: AScript GlobalFunction '%s' failed to register with error %i\n", declaration, error ); return error; }
int qasRegisterObjectBehaviour( int engineHandle, const char *objname, unsigned int behavior, const char *declaration, const void *funcPointer, int callConv ) { enginehandle_t *eh; int error; eh = qasGetEngineHandle( engineHandle ); if( !eh ) return QASINVALIDHANDLE; if( eh->max_portability ) return QASINVALIDHANDLE; else error = eh->engine->RegisterObjectBehaviour( objname, (asEBehaviours)behavior, declaration, asFUNCTION(funcPointer), (asDWORD)callConv ); if( error < 0 ) QAS_Printf( "WARNING: AScript Behavior '%s' in object '%s' failed to register with error %i\n", declaration, objname, error ); return error; }