Skip to content

Commit

Permalink
feat(VirtualObject): implement save-game VObjects and VOb properties
Browse files Browse the repository at this point in the history
  • Loading branch information
lmichaelis committed Jan 14, 2024
1 parent 277eb6b commit b04b759
Show file tree
Hide file tree
Showing 12 changed files with 1,984 additions and 200 deletions.
167 changes: 167 additions & 0 deletions include/zenkit-capi/vobs/Misc.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
#include "../Object.h"
#include "../Vector.h"

#include "VirtualObject.h"

#ifdef __cplusplus
#include <zenkit/vobs/Misc.hh>
using ZkAnimate = ZkSharedHandle<zenkit::VAnimate>;
Expand All @@ -17,6 +19,8 @@ using ZkCodeMaster = ZkSharedHandle<zenkit::VCodeMaster>;
using ZkMoverController = ZkSharedHandle<zenkit::VMoverController>;
using ZkTouchDamage = ZkSharedHandle<zenkit::VTouchDamage>;
using ZkEarthquake = ZkSharedHandle<zenkit::VEarthquake>;
using ZkNpcTalent = ZkSharedHandle<zenkit::VNpc::Talent>;
using ZkNpcSlot = zenkit::VNpc::Slot;
#else
typedef struct ZkInternal_Animate ZkAnimate;
typedef struct ZkInternal_Item ZkItem;
Expand All @@ -27,6 +31,8 @@ typedef struct ZkInternal_CodeMaster ZkCodeMaster;
typedef struct ZkInternal_MoverController ZkMoverController;
typedef struct ZkInternal_TouchDamager ZkTouchDamage;
typedef struct ZkInternal_Earthquake ZkEarthquake;
typedef struct ZkInternal_NpcTalent ZkNpcTalent;
typedef struct ZkInternal_NpcSlot ZkNpcSlot;
#endif

typedef enum {
Expand Down Expand Up @@ -162,3 +168,164 @@ ZKC_API float ZkEarthquake_getDuration(ZkEarthquake const* slf);
ZKC_API void ZkEarthquake_setDuration(ZkEarthquake* slf, float duration);
ZKC_API ZkVec3f ZkEarthquake_getAmplitude(ZkEarthquake const* slf);
ZKC_API void ZkEarthquake_setAmplitude(ZkEarthquake* slf, ZkVec3f amplitude);

ZKC_API ZkString ZkNpc_getNpcInstance(ZkNpc const* slf);
ZKC_API ZkVec3f ZkNpc_getModelScale(ZkNpc const* slf);
ZKC_API float ZkNpc_getModelFatness(ZkNpc const* slf);
ZKC_API int ZkNpc_getFlags(ZkNpc const* slf);
ZKC_API int ZkNpc_getGuild(ZkNpc const* slf);
ZKC_API int ZkNpc_getGuildTrue(ZkNpc const* slf);
ZKC_API int ZkNpc_getLevel(ZkNpc const* slf);
ZKC_API int ZkNpc_getXp(ZkNpc const* slf);
ZKC_API int ZkNpc_getXpNextLevel(ZkNpc const* slf);
ZKC_API int ZkNpc_getLp(ZkNpc const* slf);
ZKC_API int ZkNpc_getFightTactic(ZkNpc const* slf);
ZKC_API int ZkNpc_getFightMode(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getWounded(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getMad(ZkNpc const* slf);
ZKC_API int ZkNpc_getMadTime(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getPlayer(ZkNpc const* slf);
ZKC_API ZkString ZkNpc_getStartAiState(ZkNpc const* slf);
ZKC_API ZkString ZkNpc_getScriptWaypoint(ZkNpc const* slf);
ZKC_API int ZkNpc_getAttitude(ZkNpc const* slf);
ZKC_API int ZkNpc_getAttitudeTemp(ZkNpc const* slf);
ZKC_API int ZkNpc_getNameNr(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getMoveLock(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getCurrentStateValid(ZkNpc const* slf);
ZKC_API ZkString ZkNpc_getCurrentStateName(ZkNpc const* slf);
ZKC_API int ZkNpc_getCurrentStateIndex(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getCurrentStateIsRoutine(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getNextStateValid(ZkNpc const* slf);
ZKC_API ZkString ZkNpc_getNextStateName(ZkNpc const* slf);
ZKC_API int ZkNpc_getNextStateIndex(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getNextStateIsRoutine(ZkNpc const* slf);
ZKC_API int ZkNpc_getLastAiState(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getHasRoutine(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getRoutineChanged(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getRoutineOverlay(ZkNpc const* slf);
ZKC_API int ZkNpc_getRoutineOverlayCount(ZkNpc const* slf);
ZKC_API int ZkNpc_getWalkmodeRoutine(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getWeaponmodeRoutine(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getStartNewRoutine(ZkNpc const* slf);
ZKC_API int ZkNpc_getAiStateDriven(ZkNpc const* slf);
ZKC_API ZkVec3f ZkNpc_getAiStatePos(ZkNpc const* slf);
ZKC_API ZkString ZkNpc_getCurrentRoutine(ZkNpc const* slf);
ZKC_API ZkBool ZkNpc_getRespawn(ZkNpc const* slf);
ZKC_API int ZkNpc_getRespawnTime(ZkNpc const* slf);
ZKC_API int ZkNpc_getBsInterruptableOverride(ZkNpc const* slf);
ZKC_API int ZkNpc_getNpcType(ZkNpc const* slf);
ZKC_API int ZkNpc_getSpellMana(ZkNpc const* slf);
ZKC_API ZkVirtualObject* ZkNpc_getCarryVob(ZkNpc const* slf);
ZKC_API ZkVirtualObject* ZkNpc_getEnemy(ZkNpc const* slf);

ZKC_API void ZkNpc_setNpcInstance(ZkNpc* slf, ZkString npcInstance);
ZKC_API void ZkNpc_setModelScale(ZkNpc* slf, ZkVec3f modelScale);
ZKC_API void ZkNpc_setModelFatness(ZkNpc* slf, float modelFatness);
ZKC_API void ZkNpc_setFlags(ZkNpc* slf, int flags);
ZKC_API void ZkNpc_setGuild(ZkNpc* slf, int guild);
ZKC_API void ZkNpc_setGuildTrue(ZkNpc* slf, int guildTrue);
ZKC_API void ZkNpc_setLevel(ZkNpc* slf, int level);
ZKC_API void ZkNpc_setXp(ZkNpc* slf, int xp);
ZKC_API void ZkNpc_setXpNextLevel(ZkNpc* slf, int xpNextLevel);
ZKC_API void ZkNpc_setLp(ZkNpc* slf, int lp);
ZKC_API void ZkNpc_setFightTactic(ZkNpc* slf, int fightTactic);
ZKC_API void ZkNpc_setFightMode(ZkNpc* slf, int fightMode);
ZKC_API void ZkNpc_setWounded(ZkNpc* slf, ZkBool wounded);
ZKC_API void ZkNpc_setMad(ZkNpc* slf, ZkBool mad);
ZKC_API void ZkNpc_setMadTime(ZkNpc* slf, int madTime);
ZKC_API void ZkNpc_setPlayer(ZkNpc* slf, ZkBool player);
ZKC_API void ZkNpc_setStartAiState(ZkNpc* slf, ZkString startAiState);
ZKC_API void ZkNpc_setScriptWaypoint(ZkNpc* slf, ZkString scriptWaypoint);
ZKC_API void ZkNpc_setAttitude(ZkNpc* slf, int attitude);
ZKC_API void ZkNpc_setAttitudeTemp(ZkNpc* slf, int attitudeTemp);
ZKC_API void ZkNpc_setNameNr(ZkNpc* slf, int nameNr);
ZKC_API void ZkNpc_setMoveLock(ZkNpc* slf, ZkBool moveLock);
ZKC_API void ZkNpc_setCurrentStateValid(ZkNpc* slf, ZkBool currentStateValid);
ZKC_API void ZkNpc_setCurrentStateName(ZkNpc* slf, ZkString currentStateName);
ZKC_API void ZkNpc_setCurrentStateIndex(ZkNpc* slf, int currentStateIndex);
ZKC_API void ZkNpc_setCurrentStateIsRoutine(ZkNpc* slf, ZkBool currentStateIsRoutine);
ZKC_API void ZkNpc_setNextStateValid(ZkNpc* slf, ZkBool nextStateValid);
ZKC_API void ZkNpc_setNextStateName(ZkNpc* slf, ZkString nextStateName);
ZKC_API void ZkNpc_setNextStateIndex(ZkNpc* slf, int nextStateIndex);
ZKC_API void ZkNpc_setNextStateIsRoutine(ZkNpc* slf, ZkBool nextStateIsRoutine);
ZKC_API void ZkNpc_setLastAiState(ZkNpc* slf, int lastAiState);
ZKC_API void ZkNpc_setHasRoutine(ZkNpc* slf, ZkBool hasRoutine);
ZKC_API void ZkNpc_setRoutineChanged(ZkNpc* slf, ZkBool routineChanged);
ZKC_API void ZkNpc_setRoutineOverlay(ZkNpc* slf, ZkBool routineOverlay);
ZKC_API void ZkNpc_setRoutineOverlayCount(ZkNpc* slf, int routineOverlayCount);
ZKC_API void ZkNpc_setWalkmodeRoutine(ZkNpc* slf, int walkmodeRoutine);
ZKC_API void ZkNpc_setWeaponmodeRoutine(ZkNpc* slf, ZkBool weaponmodeRoutine);
ZKC_API void ZkNpc_setStartNewRoutine(ZkNpc* slf, ZkBool startNewRoutine);
ZKC_API void ZkNpc_setAiStateDriven(ZkNpc* slf, int aiStateDriven);
ZKC_API void ZkNpc_setAiStatePos(ZkNpc* slf, ZkVec3f aiStatePos);
ZKC_API void ZkNpc_setCurrentRoutine(ZkNpc* slf, ZkString currentRoutine);
ZKC_API void ZkNpc_setRespawn(ZkNpc* slf, ZkBool respawn);
ZKC_API void ZkNpc_setRespawnTime(ZkNpc* slf, int respawnTime);
ZKC_API void ZkNpc_setBsInterruptableOverride(ZkNpc* slf, int bsInterruptableOverride);
ZKC_API void ZkNpc_setNpcType(ZkNpc* slf, int npcType);
ZKC_API void ZkNpc_setSpellMana(ZkNpc* slf, int spellMana);
ZKC_API void ZkNpc_setCarryVob(ZkNpc* slf, ZkVirtualObject* carryVob);
ZKC_API void ZkNpc_setEnemy(ZkNpc* slf, ZkVirtualObject* enemy);

ZKC_API ZkSize ZkNpc_getOverlayCount(ZkNpc const* slf);
ZKC_API ZkString ZkNpc_getOverlay(ZkNpc const* slf, ZkSize i);
ZKC_API void ZkNpc_clearOverlays(ZkNpc* slf);
ZKC_API void ZkNpc_removeOverlay(ZkNpc* slf, ZkSize i);
ZKC_API void ZkNpc_setOverlay(ZkNpc* slf, ZkSize i, ZkString overlay);
ZKC_API void ZkNpc_addOverlay(ZkNpc* slf, ZkString overlay);

ZKC_API ZkSize ZkNpc_getTalentCount(ZkNpc const* slf);
ZKC_API ZkNpcTalent* ZkNpc_getTalent(ZkNpc const* slf, ZkSize i);
ZKC_API void ZkNpc_clearTalents(ZkNpc* slf);
ZKC_API void ZkNpc_removeTalent(ZkNpc* slf, ZkSize i);
ZKC_API void ZkNpc_setTalent(ZkNpc* slf, ZkSize i, ZkNpcTalent* talent);
ZKC_API void ZkNpc_addTalent(ZkNpc* slf, ZkNpcTalent* talent);

ZKC_API ZkSize ZkNpc_getItemCount(ZkNpc const* slf);
ZKC_API ZkItem* ZkNpc_getItem(ZkNpc const* slf, ZkSize i);
ZKC_API void ZkNpc_clearItems(ZkNpc* slf);
ZKC_API void ZkNpc_removeItem(ZkNpc* slf, ZkSize i);
ZKC_API void ZkNpc_setItem(ZkNpc* slf, ZkSize i, ZkItem* item);
ZKC_API void ZkNpc_addItem(ZkNpc* slf, ZkItem* item);

ZKC_API ZkSize ZkNpc_getSlotCount(ZkNpc const* slf);
ZKC_API ZkNpcSlot* ZkNpc_getSlot(ZkNpc const* slf, ZkSize i);
ZKC_API void ZkNpc_clearSlots(ZkNpc* slf);
ZKC_API void ZkNpc_removeSlot(ZkNpc* slf, ZkSize i);
ZKC_API ZkNpcSlot* ZkNpc_addSlot(ZkNpc* slf);

ZKC_API int ZkNpc_getProtection(ZkNpc const* slf, ZkSize i);
ZKC_API void ZkNpc_setProtection(ZkNpc* slf, ZkSize i, int v);

ZKC_API int ZkNpc_getAttribute(ZkNpc const* slf, ZkSize i);
ZKC_API void ZkNpc_setAttribute(ZkNpc* slf, ZkSize i, int v);

ZKC_API int ZkNpc_getHitChance(ZkNpc const* slf, ZkSize i);
ZKC_API void ZkNpc_setHitChance(ZkNpc* slf, ZkSize i, int v);

ZKC_API int ZkNpc_getMission(ZkNpc const* slf, ZkSize i);
ZKC_API void ZkNpc_setMission(ZkNpc* slf, ZkSize i, int v);

ZKC_API int const* ZkNpc_getAiVars(ZkNpc const* slf, ZkSize* len);
ZKC_API void ZkNpc_setAiVars(ZkNpc const* slf, int const* vars, ZkSize len);

ZKC_API ZkString ZkNpc_getPacked(ZkNpc const* slf, ZkSize i);
ZKC_API void ZkNpc_setPacked(ZkNpc const* slf, ZkSize i, ZkString v);

ZKC_API ZkNpcTalent* ZkNpcTalent_new(void);
ZKC_API void ZkNpcTalent_del(ZkNpcTalent* slf);
ZKC_API int ZkNpcTalent_getTalent(ZkNpcTalent const* slf);
ZKC_API int ZkNpcTalent_getValue(ZkNpcTalent const* slf);
ZKC_API int ZkNpcTalent_getSkill(ZkNpcTalent const* slf);
ZKC_API void ZkNpcTalent_setTalent(ZkNpcTalent* slf, int v);
ZKC_API void ZkNpcTalent_setValue(ZkNpcTalent* slf, int v);
ZKC_API void ZkNpcTalent_setSkill(ZkNpcTalent* slf, int v);

ZKC_API ZkBool ZkNpcSlot_getUsed(ZkNpcSlot const* slf);
ZKC_API ZkString ZkNpcSlot_getName(ZkNpcSlot const* slf);
ZKC_API ZkItem* ZkNpcSlot_getItem(ZkNpcSlot* slf);
ZKC_API ZkBool ZkNpcSlot_getInInventory(ZkNpcSlot const* slf);
ZKC_API void ZkNpcSlot_setUsed(ZkNpcSlot* slf, ZkBool used);
ZKC_API void ZkNpcSlot_setName(ZkNpcSlot* slf, ZkString name);
ZKC_API void ZkNpcSlot_setItem(ZkNpcSlot* slf, ZkItem* item);
ZKC_API void ZkNpcSlot_setInInventory(ZkNpcSlot* slf, ZkBool inInventory);
5 changes: 2 additions & 3 deletions include/zenkit-capi/vobs/MovableObject.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,8 @@ ZKC_API void ZkContainer_setContents(ZkContainer* slf, ZkString contents);

ZKC_API ZkSize ZkContainer_getItemCount(ZkContainer const* slf);
ZKC_API ZkItem* ZkContainer_getItem(ZkContainer const* slf, ZkSize i);
ZKC_API void ZkContainer_addItem(ZkContainer const* slf, ZkItem*);
ZKC_API ZkItem* ZkContainer_addNewItem(ZkContainer const* slf);
ZKC_API void ZkContainer_removeItem(ZkContainer const* slf);
ZKC_API void ZkContainer_addItem(ZkContainer const* slf, ZkItem* item);
ZKC_API void ZkContainer_removeItem(ZkContainer const* slf, ZkSize i);

ZKC_API ZkDoor* ZkDoor_load(ZkRead* buf, ZkGameVersion version);
ZKC_API ZkDoor* ZkDoor_loadPath(ZkString path, ZkGameVersion version);
Expand Down
4 changes: 4 additions & 0 deletions include/zenkit-capi/vobs/Sound.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@ ZKC_API float ZkSound_getRadius(ZkSound const* slf);
ZKC_API void ZkSound_setRadius(ZkSound* slf, float radius);
ZKC_API ZkString ZkSound_getSoundName(ZkSound const* slf);
ZKC_API void ZkSound_setSoundName(ZkSound* slf, ZkString soundName);
ZKC_API ZkBool ZkSound_getIsRunning(ZkSound const* slf);
ZKC_API void ZkSound_setIsRunning(ZkSound* slf, ZkBool isRunning);
ZKC_API ZkBool ZkSound_getIsAllowedToRun(ZkSound const* slf);
ZKC_API void ZkSound_setIsAllowedToRun(ZkSound* slf, ZkBool isAllowedToRun);

ZKC_API ZkSoundDaytime* ZkSoundDaytime_load(ZkRead* buf, ZkGameVersion version);
ZKC_API ZkSoundDaytime* ZkSoundDaytime_loadPath(ZkString path, ZkGameVersion version);
Expand Down
40 changes: 40 additions & 0 deletions include/zenkit-capi/vobs/Trigger.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "../ModelAnimation.h"
#include "../Object.h"
#include "../Stream.h"
#include "VirtualObject.h"

#ifdef __cplusplus
#include <zenkit/vobs/Trigger.hh>
Expand Down Expand Up @@ -90,6 +91,16 @@ ZKC_API void ZkTrigger_setDamageThreshold(ZkTrigger* slf, float damageThreshold)
ZKC_API float ZkTrigger_getFireDelaySeconds(ZkTrigger const* slf);
ZKC_API void ZkTrigger_setFireDelaySeconds(ZkTrigger* slf, float fireDelaySeconds);

ZKC_API ZkBool ZkTrigger_getNextTimeTriggerable(ZkTrigger const* slf);
ZKC_API ZkVirtualObject* ZkTrigger_getOtherVob(ZkTrigger const* slf);
ZKC_API int ZkTrigger_getCountCanBeActivated(ZkTrigger const* slf);
ZKC_API ZkBool ZkTrigger_getIsEnabled(ZkTrigger const* slf);

ZKC_API void ZkTrigger_setNextTimeTriggerable(ZkTrigger* slf, ZkBool nextTimeTriggerable);
ZKC_API void ZkTrigger_setOtherVob(ZkTrigger* slf, ZkVirtualObject* otherVob);
ZKC_API void ZkTrigger_setCountCanBeActivated(ZkTrigger* slf, int countCanBeActivated);
ZKC_API void ZkTrigger_setIsEnabled(ZkTrigger* slf, ZkBool isEnabled);

ZKC_API ZkMover* ZkMover_load(ZkRead* buf, ZkGameVersion version);
ZKC_API ZkMover* ZkMover_loadPath(ZkString path, ZkGameVersion version);
ZKC_API void ZkMover_del(ZkMover* slf);
Expand All @@ -113,6 +124,26 @@ ZKC_API void ZkMover_setLerpType(ZkMover* slf, ZkMoverLerpType lerpType);
ZKC_API ZkMoverSpeedType ZkMover_getSpeedType(ZkMover const* slf);
ZKC_API void ZkMover_setSpeedType(ZkMover* slf, ZkMoverSpeedType speedType);

ZKC_API ZkVec3f ZkMover_getActKeyPosDelta(ZkMover const* slf);
ZKC_API float ZkMover_getActKeyframeF(ZkMover const* slf);
ZKC_API int ZkMover_getActKeyframe(ZkMover const* slf);
ZKC_API int ZkMover_getNextKeyframe(ZkMover const* slf);
ZKC_API float ZkMover_getMoveSpeedUnit(ZkMover const* slf);
ZKC_API float ZkMover_getAdvanceDir(ZkMover const* slf);
ZKC_API uint32_t ZkMover_getMoverState(ZkMover const* slf);
ZKC_API int ZkMover_getTriggerEventCount(ZkMover const* slf);
ZKC_API float ZkMover_getStayOpenTimeDest(ZkMover const* slf);

ZKC_API void ZkMover_setActKeyPosDelta(ZkMover* slf, ZkVec3f actKeyPosDelta);
ZKC_API void ZkMover_setActKeyframeF(ZkMover* slf, float actKeyframeF);
ZKC_API void ZkMover_setActKeyframe(ZkMover* slf, int actKeyframe);
ZKC_API void ZkMover_setNextKeyframe(ZkMover* slf, int nextKeyframe);
ZKC_API void ZkMover_setMoveSpeedUnit(ZkMover* slf, float moveSpeedUnit);
ZKC_API void ZkMover_setAdvanceDir(ZkMover* slf, float advanceDir);
ZKC_API void ZkMover_setMoverState(ZkMover* slf, uint32_t moverState);
ZKC_API void ZkMover_setTriggerEventCount(ZkMover* slf, int triggerEventCount);
ZKC_API void ZkMover_setStayOpenTimeDest(ZkMover* slf, float stayOpenTimeDest);

ZKC_API ZkSize ZkMover_getKeyframeCount(ZkMover const* slf);
ZKC_API ZkAnimationSample ZkMover_getKeyframe(ZkMover const* slf, ZkSize i);
ZKC_API void ZkMover_enumerateKeyframes(ZkMover const* slf, ZkAnimationSampleEnumerator cb, void* ctx);
Expand Down Expand Up @@ -147,6 +178,12 @@ ZKC_API ZkTriggerListTarget* ZkTriggerList_addTarget(ZkTriggerList* slf);
ZKC_API void ZkTriggerList_removeTarget(ZkTriggerList* slf, ZkSize i);
ZKC_API void ZkTriggerList_removeTargets(ZkTriggerList* slf, ZkTriggerListTargetEnumerator pred, void* ctx);

ZKC_API ZkByte ZkTriggerList_getActTarget(ZkTriggerList const* slf);
ZKC_API ZkBool ZkTriggerList_getSendOnTrigger(ZkTriggerList const* slf);

ZKC_API void ZkTriggerList_setActTarget(ZkTriggerList* slf, ZkByte actTarget);
ZKC_API void ZkTriggerList_setSendOnTrigger(ZkTriggerList* slf, ZkBool sendOnTrigger);

ZKC_API ZkString ZkTriggerListTarget_getName(ZkTriggerListTarget const* slf);
ZKC_API void ZkTriggerListTarget_setName(ZkTriggerListTarget* slf, ZkString name);
ZKC_API float ZkTriggerListTarget_getDelaySeconds(ZkTriggerListTarget const* slf);
Expand Down Expand Up @@ -174,6 +211,9 @@ ZKC_API void ZkTriggerWorldStart_setTarget(ZkTriggerWorldStart* slf, ZkString ta
ZKC_API ZkBool ZkTriggerWorldStart_getFireOnce(ZkTriggerWorldStart const* slf);
ZKC_API void ZkTriggerWorldStart_setFireOnce(ZkTriggerWorldStart* slf, ZkBool fireOnce);

ZKC_API ZkBool ZkTriggerWorldStart_getHasFired(ZkTriggerWorldStart const* slf);
ZKC_API void ZkTriggerWorldStart_setHasFired(ZkTriggerWorldStart* slf, ZkBool hasFired);

ZKC_API ZkTriggerUntouch* ZkTriggerUntouch_load(ZkRead* buf, ZkGameVersion version);
ZKC_API ZkTriggerUntouch* ZkTriggerUntouch_loadPath(ZkString path, ZkGameVersion version);
ZKC_API void ZkTriggerUntouch_del(ZkTriggerUntouch* slf);
Expand Down
Loading

0 comments on commit b04b759

Please sign in to comment.