Beispiel #1
0
int QAS_Init( void )
{
	angelwrappool = QAS_MemAllocPool( "Angelwrap script module" );
	QAS_Printf( "Initializing Angel Script\n" );

	QAS_InitAngelExport();
	return 1;
}
Beispiel #2
0
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;
}
Beispiel #3
0
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 );
}
Beispiel #4
0
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;
}
Beispiel #5
0
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;
}
Beispiel #6
0
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;
}
Beispiel #7
0
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;
}
Beispiel #8
0
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;
}
Beispiel #9
0
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;
}