Контролировать переменные в генераторе - рутинная задача. Поэтому я добавил возможность некой навигации по массиву переменных. А именно есть возможность получить следующую и предыдущую переменную. Каждая переменная получит методы "Next" и "Previous". Это справедливо также и для массивов. Вот пример:
[Thread]
public void TEST() {
comment = "Variables: ";
var tmpFloat = Float.local( 1 );
var index = tmpFloat.Previous<Int>();
var name = tmpFloat.Next<sString>();
var anim = name.Next<vString>();
var aaa = anim.Next<Int>();
tmpFloat.value = 10.0;
index.value = 0;
name.value = "str";
anim.value = "anim";
aaa.value = -1;
comment = "---";
comment = "Arrays: ";
var array = Array<Pickup>.global( 3000, 4 );
var global_S_String = array.Previous<sString>();
var global_V_String = array.Next<vString>();
var global_Int_val = global_V_String.Next<Int>();
array.each( index, pickup => {
pickup.value = -1;
} );
global_S_String.value = "str 1";
global_V_String.value = "str 2";
global_Int_val.value = 11;
end_thread();
}
Здесь важно не запутаться :) Рекомендую использовать метод "Next". Он быстрее и будет понятно что делается в коде. Вот такой результат будет нас ждать:
//------------- TEST --------------- :TEST 03A4: name_thread 'TEST' /* Variables: */ 0007: 1@ = 10.0 // @ = ? (float) 0006: 0@ = 0 // @ = ? (int) 05AA: 2@s = 'str' // @s = ? (sstring) 06D2: 4@v = "anim" // @v = ? (vstring) 0006: 8@ = -1 // @ = ? (int) /* --- */ /* Arrays: */ for 0@ = 0 to 4 0004: $3000(0@,4i) = -1 // $ = ? (int) end 05A9: s$2998 = 'str 1' // s$ = ? (sstring) 06D1: v$3004 = "str 2" // v$ = ? (vstring) 0004: $3008 = 11 // $ = ? (int) 004E: end_thread
Эти команды позволяют избежать перезаписи строковых переменных и ячеек массивов. Я рекомендую использовать их не только новичкам.