인터넷에서 찾은게 2.x대 버전용이더라.
3.x대에서 가능하게 하려면 많은 수정이 필요하겠더라고
게다가 엔진 버전이 좀이라도 수정되면 또 수정되야하고
역시 에픽에서 Lua엔진을 쓸 수 있게 도와주지 않으면 안될거 같아.
아마도 안되겠지? 몇몇이 Lua엔진 쓸 수 있게 해주면 안되냐고 물어봐도 개무시 하는듯해
제작자가 아마도 오토 프로그램 만들려고 만든거 같아
이거 참고해서 오우거나 일리히트 같은 공개 엔진에다가 Lua달면 편하겠더라
(아마 어딘가에 누가 벌써 만들어서 공개한개 있겠지?)
더는 귀찮아서 테스트 못하겠고 그냥 대충 둘러본거만 알려줄게
KeyEvent
PostRender
PreRender
Tick
engine.dll에서 위의 가지 이벤트 코드 인젝션 후 Default.lua에서 이벤트 몇개 더 추려내서
대충 구현하는듯해
Lua에서 쓸 객체나 변수들은 core.dll 에서 아래 같이 뽑아낸다음 Lua엔진에 등록하는듯해
pFNameEntryArray = (TArray<FNameEntry *> *)GetProcAddress(hCore, "?Names@FName@@0V?$TArray@PAUFNameEntry@@@@A");
pFString_ConstructPChar = (void (__stdcall *)(char *))GetProcAddress(hCore, "??0FString@@QAE@PBD@Z");
pFString_Destruct = (void (__stdcall *)(void))GetProcAddress(hCore, "??1FString@@QAE@XZ");
pUObjectArray = (TArray<UObject *> *)GetProcAddress(hCore, "?GObjObjects@UObject@@0V?$TArray@PAVUObject@@@@A");
pUObjectHash = (UObject **)GetProcAddress(hCore, "?GObjHash@UObject@@0PAPAV1@A");
pViewport = (UViewport *)FindObjectByFullName("WindowsViewport WindowsClient.WindowsViewport");
pActorClass = (UClass *)FindObjectByFullName("Class Engine.Actor");
pClassClass = (UClass *)FindObjectByFullName("Class Core.Class");
pFunctionClass = (UClass *)FindObjectByFullName("Class Core.Function");
pStructClass = (UClass *)FindObjectByFullName("Class Core.Struct");
pArrayPropertyClass = (UClass *)FindObjectByFullName("Class Core.ArrayProperty");
pBoolPropertyClass = (UClass *)FindObjectByFullName("Class Core.BoolProperty");
pBytePropertyClass = (UClass *)FindObjectByFullName("Class Core.ByteProperty");
pClassPropertyClass = (UClass *)FindObjectByFullName("Class Core.ClassProperty");
pDelegatePropertyClass = (UClass *)FindObjectByFullName("Class Core.DelegateProperty");
pFixedArrayPropertyClass = (UClass *)FindObjectByFullName("Class Core.FixedArrayProperty");
pFloatPropertyClass = (UClass *)FindObjectByFullName("Class Core.FloatProperty");
pIntPropertyClass = (UClass *)FindObjectByFullName("Class Core.IntProperty");
pMapPropertyClass = (UClass *)FindObjectByFullName("Class Core.MapProperty");
pNamePropertyClass = (UClass *)FindObjectByFullName("Class Core.NameProperty");
pObjectPropertyClass = (UClass *)FindObjectByFullName("Class Core.ObjectProperty");
pPointerPropertyClass = (UClass *)FindObjectByFullName("Class Core.PointerProperty");
pPropertyClass = (UClass *)FindObjectByFullName("Class Core.Property");
pStructPropertyClass = (UClass *)FindObjectByFullName("Class Core.StructProperty");
pStrPropertyClass = (UClass *)FindObjectByFullName("Class Core.StrProperty");
댓글 0