LXVM
개요
LXVM 클래스는 피니엔진 에디터 및 런타임에서 루아로 컴파일된 LNX 를 구동시키기 위한 일종의 가상 머신 클래스입니다.
스크립트 불러오기 실행 호출 및, 리턴값 반환 등, 코드 구동에 핵심적인 기능만 포함되어 있습니다.
보통 vm 이라는 인자로 전달되며, pini.XVM 으로도 접근할 수 있습니다.
LXVM 에서는 여러개의 콜 스택을 허용하며, 각각의 콜 스택을 "루프" 라고 부릅니다.
따라서, LXVM 에서는 루프를 생성하거나 일시정지하고, 삭제하는 기능 등을 제공합니다.
또한, 저장과 불러오기 기능을 위한 덤프 및 복구 기능도 제공하고, 그것을 위한 구조로 구성되어 있습니다.
전역 상수
이름 | 설명 |
OnPreview | 에디터인지 리모트인지를 알려주는 상수입니다. true 이면 에디터이고, false이면 리모트입니다. |
전역 함수
이름 | 설명 |
_VM_LOOP_(fname,fns,stckInfo,new_arg,del_arg,start_i,rets,scall) | LNX 매크로를 실제로 돌려주는 함수입니다. |
전역 변수
이름 | 설명 |
_LNXF | LNX 스크립트 및 매크로가 들어있는 테이블입니다. |
_LNXB | 북마크 위치가 들어있는 테이블입니다. |
_LNXVT | 변수 트리거 정보가 들어있는 테이블입니다. |
_LNXG | 변수 정보를 읽고 쓸 수 있게 되어있는 테이블입니다. 일반적인 읽기 쓰기는 이것으로 접근합니다. |
_LNXGP | 변수 정보가 실제로 들어가있는 테이블입니다. 특수한 읽기 쓰기일 경우에만 이것으로 접근합니다. |
멤버 변수
이름 | 설명 |
loops | 현재 존재하는 모든 루프를 저장하는 테이블의 배열 |
currentLoop | 현재 실행중인 loops 의 테이블을 가르킴 |
멤버 함수
이름 | 설명 |
init() | vm 을 초기화하는 함수입니다. 단, 현재 vm 으로 실행중인 코드는 중지하지 않습니다. |
_return() | 현재 실행중인 매크로를 종료합니다. |
returnValue(ret) | 현재 실행중인 매크로가 ret 를 반환하게 합니다. |
returnValueOnThread(ret,idx) | 지정한 idx 루프번호에서 진행중인 매크로가 ret 를 반환하게 합니다. 결과를 반환해야 하지만 즉시 반환하지는 않고, pause 등을 사용해서 결과가 지연될 경우에 사용합니다. |
ARGU(fname, arg, default) | fname 매크로의 arg 인자를 가져옵니다. 존재하지 않는다면, 기본 값을 가져옵니다. 둘 다 존재하지 않는다면, default 를 반환합니다. |
currentLoopIdx() | 현재 돌고있는 루프의 번호를 가져옵니다. |
removeLoop(infotable) | infotable에 해당되는 루프를 loops 에서 제거합니다. |
stop() | 현재 루프를 일시정지합니다. 그리고, 루프번호를 반환합니다. |
resume(idx) | stop 에서 반환받은 번호를 idx 로 전달해 주면, 일시정지를 해제합니다. |
sleep(time) | 지정한 time초 만큼 루프를 일시정지합니다. |
GotoBookmark(bmk) | 지정한 북마크로 이동합니다. |
GotoBookmarkNewCall(bmk) | 지정한 북마크 위치부터 시작하는 새로운 매크로를 호출합니다. |
resumeAndGoBookmark(idx,bmk) | 지정한 idx 루프번호로 현재 루프를 전환한 뒤, 지정한 묵마크로 이동합니다. |
OpenLNX(file) | 지정한 file 을 로드합니다. file 은 .lua 또는 .lnx 파일입니다. 대소문자에 맞게 확장자까지 모두 적어주어야 하며, .lnx 의 경우 실행하지는 않지만, .lua 인 경우, 코드 자체는 한번 실행 합니다. |
call(stckName, start_i, fcall) | 지정한 매크로를 실행하는 새로운 루프를 생성하고 실행합니다. |
registVariableTrigger(id,varName,func) | 변수트리거를 등록합니다. id,varName,func 는 차례대로 아이디, 변수이름, 실행할 함수입니다. |
unregistVariableTrigger(id) | 변수트리거를 등록 해제합니다. |
getState() | 세이브를 위한 상태 덤프용 함수입니다. |
setState(state, targetStck) | 덤프한 데이터를 기반으로 상태를 복구합니다. |