Оглавление

Регистрация глобальной переменной

Регистрируя глобальную переменну, можно разрешить скрипту проверять и/или модифицировать переменные внутри приложения напрямую, без необходимости писать специальную функцию.

Для регистрации используйте RegisterGlobalProperty. Помните, что зарегистрированное свойство должно остаться в живых, пока его регистрация действительна в движке.

// Переменные, которые должны быть доступны в скрипте.
int      g_number       = 0;
CObject *g_object       = 0;
Vector3  g_vector       = {0,0,0};
bool     g_readOnlyFlag = false;

// Функция, регистрирующая глобальные переменные. 
void RegisterProperties(asIScriptEngine *engine)
{
    int r;
    
    // Регистрируем простую переменную, которая моет читаться и записываться из скрипта.
    r = engine->RegisterGlobalProperty("int g_number", &g_number); assert( r >= 0 );
    
    // Регистрируем переменную, куда скрипт будет сохранять CObject. 
    // Заметим, что CObject должен быть уже зарегистрировать как ссылка.
    r = engine->RegisterGlobalProperty("CObject @g_object", &g_object); assert( r >= 0 );
    
    // Регистрируем 3D вектор.
    // Заметим, что Vector3 дожен быть уже зарегистрирован как значение.
    r = engine->RegisterGlobalProperty("Vector3 g_vector", &g_vector); assert( r >= 0 );
    
    // Регистрируем флаг, который может читаться но не может записываться из скрипта.
    r = engine->RegisterGlobalProperty("const bool g_readOnlyFlag", &g_readOnlyFlag); assert( r >= 0 );
}

Перевод - arroy.one@gmail.com. При копировании материалов указывайте ссылку на источник.