C++
main.cpp中AppMain为程序运行主入口
例如:
extern "C" void AppMain(){
cout << "helllo world" << endl;
uint32_t asset = forge::AssetRegisterVoxModel("Main Scene", "", "mainScene", false);
forge::AssetSetStartCBFunc(asset, OnStart);
forge::AssetSetInterpolateCBFunc(asset, OnInterpolate);
forge::AssetSetUpdateCBFunc(asset, OnUpdate);
forge::AssetSetKeyCBFunc(asset, OnKey);
forge::AssetSetMouseButtonCBFunc(asset, OnMouseButton);
uint32_t ROBOT_ASSET = forge::AssetRegisterMob("robot", "robot/icon.png", "robot/skeleton.ozz", "robot/mesh.ozz", "robot/texture.png", "robot/Take 001.ozz");
forge::AssetSetStartCBFunc(ROBOT_ASSET, OnRobotStart);
}
注册资源
例如:
uint32_t asset = forge::AssetRegisterVoxModel("Main Scene", "", "mainScene", false);
uint32_t ROBOT_ASSET = forge::AssetRegisterMob("robot", "robot/icon.png", "robot/skeleton.ozz", "robot/mesh.ozz", "robot/texture.png", "robot/Take 001.ozz");
相关生命周期函数(事件)回调
例如:
forge::AssetSetStartCBFunc(ROBOT_ASSET, OnRobotStart);
forge::AssetSetStartCBFunc(asset, OnStart);
forge::AssetSetInterpolateCBFunc(asset, OnInterpolate);
forge::AssetSetUpdateCBFunc(asset, OnUpdate);
forge::AssetSetKeyCBFunc(asset, OnKey);
forge::AssetSetMouseButtonCBFunc(asset, OnMouseButton);
forge::AssetSetStartCBFunc(asset, OnStart);
forge::AssetSetStartCBFunc(asset, OnStart1);
通过extern申请其他cpp文件中的函数
例如 在main.cpp中调用robot.app中的OnRobotStart函数 robot.cpp中:
static void OnRobotStart(uint32_t EntityID) {
std::cout << "helllo world" << endl;
}
extern void OnRobotStart(uint32_t EntityID);
资源id获取与使用
例如:
#define GetMobID(EntityID) forge::EntityGetMobID(EntityID)
#define GetVoxModelID(EntityID) forge::EntityGetVoxModelID(EntityID)
static void OnRobotStart(uint32_t EntityID) {
woxiao::MobGetPosition(GetMobID(EntityID),&x,&y,&z,&yaw,&pitch);
woxiao::MobSetMotion(GetMobID(EntityID),woxiao::MOTION_FORWARD,1,0);
}
static void OnStart(uint32_t EntityID) {
woxiao::SetBlock(GetVoxModelID(EntityID),0.0,25.0,0.0,woxiao::BLOCK_O);
}
角色资源动作
例如:
woxiao::MobDoAction(GetMobID(EntityID),"action",1,true);
woxiao::MobSetActionRange(GetMobID(EntityID),0.0/205,25.0/205);
API
woxiao
namespace woxiao {
enum {
KEY_SPACE = 32,
KEY_APOSTROPHE = 39,
KEY_COMMA = 44,
KEY_MINUS = 45,
KEY_PERIOD = 46,
KEY_SLASH = 47,
KEY_K_0 = 48,
KEY_K_1 = 49,
KEY_K_2 = 50,
KEY_K_3 = 51,
KEY_K_4 = 52,
KEY_K_5 = 53,
KEY_K_6 = 54,
KEY_K_7 = 55,
KEY_K_8 = 56,
KEY_K_9 = 57,
KEY_SEMICOLON = 59,
KEY_EQUAL = 61,
KEY_A = 97,
KEY_B = 98,
KEY_C = 99,
KEY_D = 100,
KEY_E = 101,
KEY_F = 102,
KEY_G = 103,
KEY_H = 104,
KEY_I = 105,
KEY_J = 106,
KEY_K = 107,
KEY_L = 108,
KEY_M = 109,
KEY_N = 110,
KEY_O = 111,
KEY_P = 112,
KEY_Q = 113,
KEY_R = 114,
KEY_S = 115,
KEY_T = 116,
KEY_U = 117,
KEY_V = 118,
KEY_W = 119,
KEY_X = 120,
KEY_Y = 121,
KEY_Z = 122,
KEY_LEFT_BRACKET = 91,
KEY_BACKSLASH = 92,
KEY_RIGHT_BRACKET = 93,
KEY_GRAVE_ACCENT = 96,
KEY_ESCAPE = 27,
KEY_ENTER = 13,
KEY_TAB = 9,
KEY_BACKSPACE = 8,
KEY_INSERT = 1073741897,
KEY_DELETE = 127,
KEY_RIGHT = 1073741903,
KEY_LEFT = 1073741904,
KEY_DOWN = 1073741905,
KEY_UP = 1073741906,
KEY_PAGE_UP = 1073741899,
KEY_PAGE_DOWN = 1073741902,
KEY_HOME = 1073741898,
KEY_END = 1073741901,
KEY_CAPS_LOCK = 1073741881,
KEY_SCROLL_LOCK = 1073741895,
KEY_NUM_LOCK = 1073741907,
KEY_PRINT_SCREEN = 1073741894,
KEY_PAUSE = 1073741896,
KEY_F1 = 1073741882,
KEY_F2 = 1073741883,
KEY_F3 = 1073741884,
KEY_F4 = 1073741885,
KEY_F5 = 1073741886,
KEY_F6 = 1073741887,
KEY_F7 = 1073741888,
KEY_F8 = 1073741889,
KEY_F9 = 1073741890,
KEY_F10 = 1073741891,
KEY_F11 = 1073741892,
KEY_F12 = 1073741893,
KEY_KP_0 = 1073741922,
KEY_KP_1 = 1073741913,
KEY_KP_2 = 1073741914,
KEY_KP_3 = 1073741915,
KEY_KP_4 = 1073741916,
KEY_KP_5 = 1073741917,
KEY_KP_6 = 1073741918,
KEY_KP_7 = 1073741919,
KEY_KP_8 = 1073741920,
KEY_KP_9 = 1073741921,
KEY_KP_DECIMAL = 1073742044,
KEY_KP_DIVIDE = 1073741908,
KEY_KP_MULTIPLY = 1073741909,
KEY_KP_SUBTRACT = 1073741910,
KEY_KP_ADD = 1073741911,
KEY_KP_ENTER = 1073741912,
KEY_LEFT_SHIFT = 1073742049,
KEY_LEFT_CONTROL = 1073742048,
KEY_LEFT_ALT = 1073742050,
KEY_LEFT_SUPER = 1073742051,
KEY_RIGHT_SHIFT = 1073742053,
KEY_RIGHT_CONTROL = 1073742052,
KEY_RIGHT_ALT = 1073742054,
KEY_RIGHT_SUPER = 1073742055,
KEY_MENU = 1073741942,
};
enum {
MOUSEBUTTON_LEFT = 1,
MOUSEBUTTON_RIGHT = 3,
MOUSEBUTTON_MIDDLE = 2,
};
enum {
ACTION_RELEASE = 0,
ACTION_PRESS = 1,
ACTION_REPEAT = 2,
};
enum {
MOD_SHIFT = 1,
MOD_CONTROL = 2,
MOD_ALT = 4,
MOD_SUPER = 8,
};
enum {
MOTION_NONE = 0,
MOTION_FORWARD = 1,
MOTION_BACKWARD = 2,
MOTION_STRAFE_LEFT = 4,
MOTION_STRAFE_RIGHT = 8,
MOTION_YAW_LEFT = 16,
MOTION_YAW_RIGHT = 32,
MOTION_PITCH_UP = 64,
MOTION_PITCH_DOWN = 128,
MOTION_JUMPING = 256,
MOTION_CROUCHING = 512,
MOTION_NO_GRAVITY = 1024,
MOTION_CLIMB = 2048,
};
enum {
VOXMODEL_TYPE_PROCEDURE_NOISE = 1,
VOXMODEL_TYPE_MODEL = 3,
};
enum {
BLOCK_AIR = 0,
BLOCK_GRASS_BLOCK = 1,
BLOCK_RED_SAND = 2,
BLOCK_STONE_BRICKS = 3,
BLOCK_BRICKS = 4,
BLOCK_OAK_LOG = 5,
BLOCK_STONE = 6,
BLOCK_DIRT = 7,
BLOCK_OAK_PLANKS = 8,
BLOCK_COBBLESTONE = 11,
BLOCK_WATER = 12,
BLOCK_LAVA = 13,
BLOCK_CHEST = 14,
BLOCK_OAK_LEAVES = 15,
BLOCK_CLOUD = 16,
BLOCK_TALL_GRASS = 17,
BLOCK_DANDELION = 18,
BLOCK_POPPY = 19,
BLOCK_RED_MUSHROOM = 21,
BLOCK_BROWN_MUSHROOM = 22,
BLOCK_DEAD_BUSH = 23,
BLOCK_SPONGE = 24,
BLOCK_MELON = 25,
BLOCK_END_STONE = 26,
BLOCK_TNT = 27,
BLOCK_BLOCK_OF_EMERALD_OLD = 28,
BLOCK_FERN = 29,
BLOCK_BLACK_WOOL = 32,
BLOCK_BLUE_WOOL = 33,
BLOCK_BROWN_WOOL = 34,
BLOCK_CYAN_WOOL = 35,
BLOCK_GRAY_WOOL = 36,
BLOCK_GREEN_WOOL = 37,
BLOCK_LIGHT_BLUE_WOOL = 38,
BLOCK_LIME_WOOL = 39,
BLOCK_MAGENTA_WOOL = 40,
BLOCK_ORANGE_WOOL = 41,
BLOCK_PINK_WOOL = 42,
BLOCK_PURPLE_WOOL = 43,
BLOCK_RED_WOOL = 44,
BLOCK_LIGHT_GRAY_WOOL = 45,
BLOCK_WHITE_WOOL = 46,
BLOCK_YELLOW_WOOL = 47,
BLOCK_DIAMOND_ORE = 48,
BLOCK_REDSTONE_ORE = 49,
BLOCK_BOOKSHELF = 50,
BLOCK_MOSSY_COBBLESTONE = 51,
BLOCK_OBSIDIAN = 52,
BLOCK_WORKBENCH = 53,
BLOCK_FURNACE = 54,
BLOCK_SNOW_BLOCK = 57,
BLOCK_CLAY_BLOCK = 59,
BLOCK_JUKEBOX = 60,
BLOCK_CACTUS = 61,
BLOCK_MYCELIUM = 62,
BLOCK_NETHERRACK = 63,
BLOCK_GLOWSTONE = 64,
BLOCK_BEDROCK = 65,
BLOCK_GRAVEL = 66,
BLOCK_BLOCK_OF_IRON = 67,
BLOCK_BLOCK_OF_GOLD = 68,
BLOCK_BLOCK_OF_DIAMOND = 69,
BLOCK_GOLD_ORE = 70,
BLOCK_IRON_ORE = 71,
BLOCK_COAL_ORE = 72,
BLOCK_LAPIS_LAZULI_ORE = 73,
BLOCK_LAPIS_LAZULI_BLOCK = 74,
BLOCK_SANDSTONE = 75,
BLOCK_MOSSY_STONE_BRICKS = 76,
BLOCK_CRACKED_STONE_BRICKS = 77,
BLOCK_JACK_O_LANTERN_OFF = 79,
BLOCK_JACK_O_LANTERN_ON = 80,
BLOCK_BROWN_MUSHROOM_BLOCK = 81,
BLOCK_RED_MUSHROOM_BLOCK = 82,
BLOCK_EMERALD_ORE = 84,
BLOCK_SOUL_SAND = 85,
BLOCK_NETHER_BRICKS = 86,
BLOCK_DRY_FARMLAND = 87,
BLOCK_WET_FARMLAND = 88,
BLOCK_GRANITE = 91,
BLOCK_POLISHED_GRANITE = 92,
BLOCK_DIORITE = 93,
BLOCK_POLISHED_DIORITE = 94,
BLOCK_ANDESITE = 95,
BLOCK_POLISHED_ANDESITE = 96,
BLOCK_SMOOTH_RED_SANDSTONE = 97,
BLOCK_CHISELED_RED_SANDSTONE = 98,
BLOCK_RED_SANDSTONE = 99,
BLOCK_SAND = 100,
BLOCK_SMOOTH_SANDSTONE = 101,
BLOCK_CHISELED_SANDSTONE = 102,
BLOCK_BLOCK_OF_QUARTZ = 103,
BLOCK_QUARTZ_PILLAR = 104,
BLOCK_CHISELED_QUARTZ_BLOCK = 105,
BLOCK_DOUBLE_STONE_SLAB = 106,
BLOCK_END_STONE_BRICKS = 107,
BLOCK_CHISELED_STONE_BRICKS = 108,
BLOCK_PRISMARINE_BRICKS = 109,
BLOCK_PRISMARINE = 110,
BLOCK_DARK_PRISMARINE = 111,
BLOCK_PURPUR_PILLAR = 112,
BLOCK_PURPUR_BLOCK = 113,
BLOCK_RED_NETHER_BRICKS = 114,
BLOCK_BLOCK_OF_COAL = 115,
BLOCK_DRAGON_EGG = 116,
BLOCK_COARSE_DIRT = 117,
BLOCK_PODZOL = 118,
BLOCK_GRASS_PATH = 119,
BLOCK_SNOW_GRASS = 120,
BLOCK_WET_SPONGE = 121,
BLOCK_NETHER_QUARTZ_ORE = 122,
BLOCK_SEA_LANTERN = 123,
BLOCK_HAY_BALE = 124,
BLOCK_BONE_BLOCK = 125,
BLOCK_NETHER_WART_BLOCK = 126,
BLOCK_MAGMA_BLOCK = 127,
BLOCK_BEACON = 128,
BLOCK_WHEAT = 129,
BLOCK_COBWEB = 130,
BLOCK_REDSTONE_LAMP = 131,
BLOCK_OXEYE_DAISY = 132,
BLOCK_PEONY = 133,
BLOCK_ORANGE_TULIP = 134,
BLOCK_LILAC = 135,
BLOCK_ROSE_BUSH = 136,
BLOCK_WHITE_TULIP = 137,
BLOCK_BLUE_ORCHID = 138,
BLOCK_ALLIUM = 139,
BLOCK_AZURE_BLUET = 140,
BLOCK_IRON_BARS = 141,
BLOCK_MUSHROOM_STEM = 142,
BLOCK_CAULDRON = 143,
BLOCK_SPRUCE_PLANKS = 144,
BLOCK_BIRCH_PLANKS = 145,
BLOCK_JUNGLE_PLANKS = 146,
BLOCK_ACACIA_PLANKS = 147,
BLOCK_DARK_OAK_PLANKS = 148,
BLOCK_SPRUCE_LOG = 149,
BLOCK_BIRCH_LOG = 150,
BLOCK_JUNGLE_LOG = 151,
BLOCK_ACACIA_LOG = 152,
BLOCK_DARK_OAK_LOG = 153,
BLOCK_SPRUCE_LEAVES = 154,
BLOCK_BIRCH_LEAVES = 155,
BLOCK_JUNGLE_LEAVES = 156,
BLOCK_ACACIA_LEAVES = 157,
BLOCK_DARK_OAK_LEAVES = 158,
BLOCK_BLACK_CONCRETE = 159,
BLOCK_BLUE_CONCRETE = 160,
BLOCK_BROWN_CONCRETE = 161,
BLOCK_CYAN_CONCRETE = 162,
BLOCK_GRAY_CONCRETE = 163,
BLOCK_GREEN_CONCRETE = 164,
BLOCK_LIGHT_BLUE_CONCRETE = 165,
BLOCK_LIME_CONCRETE = 166,
BLOCK_MAGENTA_CONCRETE = 167,
BLOCK_ORANGE_CONCRETE = 168,
BLOCK_PINK_CONCRETE = 169,
BLOCK_PURPLE_CONCRETE = 170,
BLOCK_RED_CONCRETE = 171,
BLOCK_LIGHT_GRAY_CONCRETE = 172,
BLOCK_WHITE_CONCRETE = 173,
BLOCK_YELLOW_CONCRETE = 174,
BLOCK_BLACK_CONCRETE_POWDER = 175,
BLOCK_BLUE_CONCRETE_POWDER = 176,
BLOCK_BROWN_CONCRETE_POWDER = 177,
BLOCK_CYAN_CONCRETE_POWDER = 178,
BLOCK_GRAY_CONCRETE_POWDER = 179,
BLOCK_GREEN_CONCRETE_POWDER = 180,
BLOCK_LIGHT_BLUE_CONCRETE_POWDER = 181,
BLOCK_LIME_CONCRETE_POWDER = 182,
BLOCK_MAGENTA_CONCRETE_POWDER = 183,
BLOCK_ORANGE_CONCRETE_POWDER = 184,
BLOCK_PINK_CONCRETE_POWDER = 185,
BLOCK_PURPLE_CONCRETE_POWDER = 186,
BLOCK_RED_CONCRETE_POWDER = 187,
BLOCK_LIGHT_GRAY_CONCRETE_POWDER = 188,
BLOCK_WHITE_CONCRETE_POWDER = 189,
BLOCK_YELLOW_CONCRETE_POWDER = 190,
BLOCK_BLACK_SHULKER_BOX = 191,
BLOCK_BLUE_SHULKER_BOX = 192,
BLOCK_BROWN_SHULKER_BOX = 193,
BLOCK_CYAN_SHULKER_BOX = 194,
BLOCK_GRAY_SHULKER_BOX = 195,
BLOCK_GREEN_SHULKER_BOX = 196,
BLOCK_LIGHT_BLUE_SHULKER_BOX = 197,
BLOCK_LIME_SHULKER_BOX = 198,
BLOCK_MAGENTA_SHULKER_BOX = 199,
BLOCK_ORANGE_SHULKER_BOX = 200,
BLOCK_PINK_SHULKER_BOX = 201,
BLOCK_PURPLE_SHULKER_BOX = 202,
BLOCK_RED_SHULKER_BOX = 203,
BLOCK_LIGHT_GRAY_SHULKER_BOX = 204,
BLOCK_WHITE_SHULKER_BOX = 205,
BLOCK_YELLOW_SHULKER_BOX = 206,
BLOCK_BLACK_TERRACOTTA = 207,
BLOCK_BLUE_TERRACOTTA = 208,
BLOCK_BROWN_TERRACOTTA = 209,
BLOCK_CYAN_TERRACOTTA = 210,
BLOCK_GRAY_TERRACOTTA = 211,
BLOCK_GREEN_TERRACOTTA = 212,
BLOCK_LIGHT_BLUE_TERRACOTTA = 213,
BLOCK_LIME_TERRACOTTA = 214,
BLOCK_MAGENTA_TERRACOTTA = 215,
BLOCK_ORANGE_TERRACOTTA = 216,
BLOCK_PINK_TERRACOTTA = 217,
BLOCK_PURPLE_TERRACOTTA = 218,
BLOCK_RED_TERRACOTTA = 219,
BLOCK_LIGHT_GRAY_TERRACOTTA = 220,
BLOCK_WHITE_TERRACOTTA = 221,
BLOCK_YELLOW_TERRACOTTA = 222,
BLOCK_ENDER_CHEST = 223,
BLOCK_DOG_FOOD = 224,
BLOCK_POTATO = 225,
BLOCK_CARROT = 226,
BLOCK_TUBE_CORAL = 227,
BLOCK_HORN_CORAL = 228,
BLOCK_FIRE_CORAL = 229,
BLOCK_WOODEN_BOX_01 = 230,
BLOCK_WOODEN_BOX_02 = 231,
BLOCK_SPEAKER_01 = 232,
BLOCK_SPEAKER_02 = 233,
BLOCK_GLASS = 234,
BLOCK_BLUE_ICE = 235,
BLOCK_BARREL = 236,
BLOCK_LIME_GLAZED_TERRACOTTA = 237,
BLOCK_RED_GLAZED_TERRACOTTA = 238,
BLOCK_BLACK_GLAZED_TERRACOTTA = 239,
BLOCK_WHITE_GLAZED_TERRACOTTA = 240,
BLOCK_ORANGE_GLAZED_TERRACOTTA = 241,
BLOCK_BLOCK_OF_EMERALD = 242,
BLOCK_FRUIT_SAPLING = 243,
BLOCK_DECORATIVE_PLANKS_01 = 244,
BLOCK_DECORATIVE_PLANKS_02 = 245,
BLOCK_DECORATIVE_PLANKS_03 = 246,
BLOCK_ACACIA_DOOR_01 = 247,
BLOCK_ACACIA_DOOR_02 = 248,
BLOCK_BIRCH_DOOR_01 = 249,
BLOCK_BIRCH_DOOR_02 = 250,
BLOCK_TRAP_DOOR = 251,
BLOCK_SPRUCE_DOOR_01 = 252,
BLOCK_SPRUCE_DOOR_02 = 253,
BLOCK_PISTON = 254,
BLOCK_FENCE = 255,
BLOCK_A = 256,
BLOCK_B = 257,
BLOCK_C = 258,
BLOCK_D = 259,
BLOCK_E = 260,
BLOCK_F = 261,
BLOCK_G = 262,
BLOCK_H = 263,
BLOCK_I = 264,
BLOCK_J = 265,
BLOCK_K = 266,
BLOCK_L = 267,
BLOCK_M = 268,
BLOCK_N = 269,
BLOCK_O = 270,
BLOCK_P = 271,
BLOCK_Q = 272,
BLOCK_R = 273,
BLOCK_S = 274,
BLOCK_T = 275,
BLOCK_U = 276,
BLOCK_V = 277,
BLOCK_W = 278,
BLOCK_X = 279,
BLOCK_Y = 280,
BLOCK_Z = 281,
BLOCK_ZERO = 282,
BLOCK_ONE = 283,
BLOCK_TWO = 284,
BLOCK_THREE = 285,
BLOCK_FOUR = 286,
BLOCK_FIVE = 287,
BLOCK_SIX = 288,
BLOCK_SEVEN = 289,
BLOCK_EIGHT = 290,
BLOCK_NINE = 291,
BLOCK_PLUS = 292,
BLOCK_SUBTRACT = 293,
BLOCK_MULTIPLY = 294,
BLOCK_DIVIDE = 295,
};
WXAPI int GetKey(int Key);
WXAPI void PrintLog(const char* Text);
WXAPI const char* GetUserProjectDir(void);
WXAPI void SetBlock(uint32_t VMID, int x, int y, int z, int Sort);
WXAPI void BuildTreeDefault(uint32_t VMID, int x, int y, int z);
WXAPI void BuildCylinder(uint32_t VMID, int x, int y, int z, int Height, int Radius, int Sort, bool Fill);
WXAPI void BuildByImage(uint32_t VMID, int x, int y, int z, int Highest, const char* File);
WXAPI void BuildByGoxel(uint32_t VMID, int x, int y, int z, const char* File);
WXAPI void BuildBySqliteAsync(uint32_t VMID, int x, int y, int z, const char* File);
WXAPI bool BlockSortIsExist(int Sort);
WXAPI int BlockSortGetByColor(uint8_t Color[4], bool Exact);
WXAPI int BlockSortGetByName(const char* Name);
WXAPI int BlockSortGet(uint32_t VMId, int x, int y, int z);
WXAPI int GetHighest(int x, int z, uint32_t vmidExclude = -1);
WXAPI int GetHitBlockFromCamera(uint32_t* VMID, int* bx, int* by, int* bz, const float MaxDistance);
WXAPI bool GetBuildPositionFromCamera(uint32_t* VMID, int* bx, int* by, int* bz, const float MaxDistance);
WXAPI uint32_t VoxModelInsert(const char* Path, int Type, int OwnerId, bool Write);
WXAPI bool VoxModelRemove(uint32_t VMID);
WXAPI void VoxModelSetPostion(uint32_t VMID, float x, float y, float z, float yaw, float pitch);
WXAPI void VoxModelGetPosition(uint32_t VMID, float* px, float* py, float* pz, float* pyaw, float* ppitch);
WXAPI void VoxModelSetMotion(uint32_t VMID, int MotionFlag, float Speed, float AngularSpeed);
WXAPI void SetDayTime(float Time, int DayLength);
WXAPI void GetDayTime(float* Time, int* DayLength);
WXAPI void LightingBlock(uint32_t VMID, int x, int y, int z, bool Lighting);
WXAPI void FogSetDistantRatio(float Ratio);
WXAPI void LoadSky(const char* File);
WXAPI void CameraAttachMobJoint(uint32_t MobID, int Joint);
WXAPI void CameraAttachVoxModel(uint32_t VMID);
WXAPI void CameraSetPosition(float x, float y, float z, float yaw, float pitch);
WXAPI void CameraGetPosition(float* px, float* py, float* pz, float* pyaw, float* ppitch);
WXAPI bool CameraIsFlying(void);
WXAPI void CameraSetFlying(bool Flying);
WXAPI float GetFov(void);
WXAPI void SetFov(float Fov);
WXAPI uint32_t MobCreate(const char* SkFilePath, int Height);
WXAPI void MobDestroy(uint32_t MobID);
WXAPI bool MobLoadAnimation(uint32_t MobID, const char* ActionName, const char* File);
WXAPI bool MobLoadMesh(uint32_t MobID, const char* MeshName, const char* File);
WXAPI bool MobLoadTexture(uint32_t MobID, const char* TextureName, const char* File);
WXAPI void MobSetMotion(uint32_t MobID, int MotionFlag, int Speed, int AngularSpeed);
WXAPI void MobSetPosition(uint32_t MobID, float x, float y, float z, float yaw, float pitch);
WXAPI void MobGetPosition(uint32_t MobID, float* px, float* py, float* pz, float* pyaw, float* ppitch);
WXAPI void MobDoAction(uint32_t MobID, const char* Name, float Speed, bool Loop);
WXAPI void MobSetActionRange(uint32_t MobID, float Begin, float End);
WXAPI void MobSetHidden(uint32_t MobID, bool Hidden);
WXAPI void MobSetPause(uint32_t MobID, bool Pause);
WXAPI bool MobCollidePoint(uint32_t MobID, const float P[4]);
WXAPI void MobAttachVoxModel(uint32_t MobID, uint32_t VMID);
WXAPI int MobGetJoint(uint32_t MobID, const char* Name);
WXAPI void MobAttachVoxMdel2Joint(uint32_t MobID, uint32_t VMID, int Joint);
WXAPI void ParticleFountainEmit(float x, float y, float z);
WXAPI void BreakBlockEffect(uint32_t VMId, int x, int y, int z, int Sort);
WXAPI uint32_t AudioCreate(const char* File, bool ThreeDimensional);
WXAPI void AudioDestroy(uint32_t AudioId);
WXAPI bool AudioIsPlaying(uint32_t AudioId);
WXAPI void AudioPlay(uint32_t AudioId, bool Loop);
WXAPI void AudioStop(uint32_t AudioId);
WXAPI void AudioStopAll(void);
WXAPI void AudioSetPos(uint32_t AudioId, float x, float y, float z);
WXAPI void AudioSetRolloffFactor(uint32_t AudioId, float Factor);
WXAPI void AudioSetMinDistance(uint32_t AudioId, float Distance);
WXAPI void AudioSetMaxDistance(uint32_t AudioId, float Distance);
WXAPI void AudioSetGain(uint32_t AudioId, float Gain);
WXAPI void AudioSetPitch(uint32_t AudioId, float Pitch);
WXAPI void AudioListenerSetPos(float x, float y, float z);
WXAPI void AudioListenerSetOri(float yaw, float pitch);
WXAPI bool AudioCaptureIsRunning(void);
WXAPI bool AudioCaptureStart(const char* File);
WXAPI void AudioCaptureStop(void);
WXAPI void ARInitialze(const char* ImgFile, float Multiple = 128.0f);
typedef void(*OnAppInterpolate)(uint64_t FrameStamp, double DeltaTime);
typedef void(*OnAppUpdate)(uint64_t FrameStamp, double DeltaTime);
typedef bool(*OnAppKey)(uint64_t FrameStamp, int Key, int Scancode, int Action, int Mods);
typedef bool(*OnAppMouseButton)(uint64_t FrameStamp, int Button, int Action, int Mods);
WXAPI void AppSetCBInterpolate(OnAppInterpolate Func);
WXAPI void AppSetCBUpdate(OnAppUpdate Func);
WXAPI void AppSetCBKey(OnAppKey Func);
WXAPI void AppSetCBMouseButton(OnAppMouseButton Func);
typedef void(*OnResponse)(const char* Response);
WXAPI bool UtilHttpGet(const char* URL, OnResponse ResponseFunc);
}
forge
namespace forge {
WXAPI uint32_t AssetRegisterBlock(const char* Name, const char* IconFile, int BlockSort);
WXAPI uint32_t AssetRegisterMob(const char* Name, const char* IconFile, const char* MobSkeleton,
const char* MobMesh = NULL, const char* MobTexture = NULL, const char* MobAction = NULL,
float ActionRangeMin = 0.0f, float ActionRangeMax = 1.0f);
WXAPI uint32_t AssetRegisterVoxModel(const char* Name, const char* IconFile, const char* VoxModelPath, bool bWrite = false);
typedef void(*OnAssetInteract)(uint32_t EntityID, int MouseButton);
typedef void(*OnAssetStart)(uint32_t EntityID);
typedef void(*OnAssetInterpolate)(uint32_t EntityID, uint64_t FrameStamp, double DeltaTime);
typedef void(*OnAssetUpdate)(uint32_t EntityID, uint64_t FrameStamp, double DeltaTime);
typedef bool(*OnAssetKey)(uint32_t EntityID, uint64_t FrameStamp, int Key, int Scancode, int Action, int Mods);
typedef bool(*OnAssetMouseButton)(uint32_t EntityID, uint64_t FrameStamp, int Button, int Action, int Mods);
WXAPI void AssetSetInteractCBFunc(uint32_t AssetID, OnAssetInteract InteractFunc);
WXAPI void AssetSetStartCBFunc(uint32_t AssetID, OnAssetStart StartFunc);
WXAPI void AssetSetInterpolateCBFunc(uint32_t AssetID, OnAssetInterpolate InterpolateFunc);
WXAPI void AssetSetUpdateCBFunc(uint32_t AssetID, OnAssetUpdate UpdateFunc);
WXAPI void AssetSetKeyCBFunc(uint32_t AssetID, OnAssetKey KeyFunc);
WXAPI void AssetSetMouseButtonCBFunc(uint32_t AssetID, OnAssetMouseButton MouseButtonFunc);
WXAPI uint32_t EntityGetMobID(uint32_t EntityID);
WXAPI uint32_t EntityGetVoxModelID(uint32_t EntityID);
typedef void(*OnCameraMove)(int MotionFlag, double DeltaTime);
typedef void(*OnCameraRotate)(float DeltaYaw, double DeltaPitch);
typedef void(*OnCameraToggleFlying)(void);
WXAPI void SetCameraControl(OnCameraMove MoveFunc, OnCameraRotate RotateFunc, OnCameraToggleFlying ToggleFlyingFunc);
WXAPI void SetCameraControlDefault(void);
typedef void(*OnUIContinue)(void);
typedef void(*OnUIQuestionAnswer)(int OptionIndex, const char* Option);
typedef void(*OnUIInputAnswer)(const char* InputText);
typedef void(*OnUIButtonClick)(void);
WXAPI void ShowDialog(const char* Speaker, const char* Content, OnUIContinue ContinueFunc);
WXAPI void ShowQuestionDialog(const char* Speaker, const char* Content, const char** Options, int NumOption, OnUIQuestionAnswer AnswerFunc);
WXAPI void ShowInputDialog(const char* Speaker, const char* Content, OnUIInputAnswer AnswerFunc);
WXAPI void ShowMessageBox(const char* Content, OnUIContinue ContinueFunc);
WXAPI void ShowContactBook(void);
WXAPI void ContactBookAddEntry(const char* Name, const char* Phone, const char* Age, const char* Address, const char* Remark);
WXAPI void ContactBookClearEntries(void);
WXAPI void ShowLetter(const char* Content);
WXAPI void ShowInvitationCard(const char* Name, const char* Address);
WXAPI void ShowSubtitles(const char* Subtitles);
WXAPI void CloseSubtitles(void);
WXAPI void ShowCover(const char* ImageFile, const char* Title, const char* Author, const char* Text);
WXAPI void CloseCover(void);
WXAPI void ShowCountdown(int CountDown);
WXAPI void AddQuickButton(const char* Label, OnUIButtonClick ClickFunc);
}