PiniApi:LXVM

피니엔진위키미러
이동: 둘러보기, 검색

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) 덤프한 데이터를 기반으로 상태를 복구합니다.