Skip to content

Commit a66edd7

Browse files
committed
Merge branch 'master' into alloverse
2 parents 637433d + 85cc82d commit a66edd7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+769
-472
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ AndroidManifest*.xml
1616
/lovr.exe
1717
/lovr.exp
1818
/lovr.lib
19+
/lovr.pdb
20+
/lovr.ilk
1921
/lovr.js
2022
/lovr.worker.js
2123
/lovr.html

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ if(EMSCRIPTEN)
4949
"-Os "
5050
"-s USE_WEBGL2=1 "
5151
"-s FORCE_FILESYSTEM=1 "
52-
"-s \"EXPORTED_FUNCTIONS=['_main','_lovrDestroy','_webxr_attach','_webxr_detach','_lovrCanvasCreateFromHandle','_lovrCanvasDestroy','_lovrGraphicsSetCamera']\" "
52+
"-s \"EXPORTED_FUNCTIONS=['_main','_lovrDestroy','_webxr_attach','_webxr_detach','_lovrCanvasCreateFromHandle','_lovrCanvasDestroy','_lovrGraphicsSetBackbuffer','_lovrGraphicsSetViewMatrix','_lovrGraphicsSetProjection']\" "
5353
"-s \"EXTRA_EXPORTED_RUNTIME_METHODS=['getValue','setValue']\" "
5454
"--js-library \"${CMAKE_CURRENT_SOURCE_DIR}/src/resources/webxr.js\" "
5555
"--shell-file \"${CMAKE_CURRENT_SOURCE_DIR}/src/resources/lovr.html\""

Tuprules.tup

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ CFLAGS += -Wall -Wextra
1111
CFLAGS += -Wno-unused-parameter
1212
CFLAGS_@(OPENVR) += -Wno-typedef-redefinition
1313
CFLAGS_@(STRICT) += -Werror
14-
CFLAGS_@(DEBUG) += -g
14+
FLAGS_@(DEBUG) += -g
1515
FLAGS_@(OPTIMIZE) += -Os -flto
1616
FLAGS_@(SANITIZE) += -fsanitize=address,undefined
1717

@@ -21,7 +21,9 @@ CFLAGS_win32 += -D_CRT_SECURE_NO_WARNINGS
2121
CFLAGS_win32 += -Wno-language-extension-token
2222
LDFLAGS_win32 += -lShell32 -lOle32
2323
EXTRAS_win32 += lovr.lib lovr.exp
24-
SUFFIX_win32 = .exe
24+
ifeq (@(DEBUG),y)
25+
EXTRAS_win32 += lovr.pdb lovr.ilk
26+
endif
2527

2628
## Linux
2729
CFLAGS_linux += -DLOVR_GL
@@ -41,20 +43,18 @@ LDFLAGS_android += --target=aarch64-linux-android@(ANDROID_VERSION)
4143
LDFLAGS_android += -landroid -lEGL -lGLESv3
4244
LDFLAGS_android += -shared
4345
PREFIX_android = lib/arm64-v8a/lib
44-
SUFFIX_android = .so
4546

4647
## emscripten
4748
CFLAGS_web += -DLOVR_WEBGL
4849
LDFLAGS_web += -s USE_WEBGL2
4950
LDFLAGS_web += -s FORCE_FILESYSTEM
50-
LDFLAGS_web += -s EXPORTED_FUNCTIONS="['_main','_lovrDestroy','_webxr_attach','_webxr_detach','_lovrCanvasCreateFromHandle','_lovrCanvasDestroy','_lovrGraphicsSetCamera']"
51+
LDFLAGS_web += -s EXPORTED_FUNCTIONS="['_main','_lovrDestroy','_webxr_attach','_webxr_detach','_lovrCanvasCreateFromHandle','_lovrCanvasDestroy','_lovrGraphicsSetBackbuffer','_lovrGraphicsSetViewMatrix','_lovrGraphicsSetProjection']"
5152
LDFLAGS_@(WEBXR)_web += --js-library $(ROOT)/src/resources/webxr.js
5253
LDFLAGS_web += --shell-file $(ROOT)/src/resources/lovr.html
5354
CFLAGS_@(THREAD)_web += -s USE_PTHREADS=1
5455
LDFLAGS_@(THREAD)_web += -s USE_PTHREADS=1
5556
EXTRAS_web = lovr.js lovr.wasm
5657
EXTRAS_@(THREAD)_web += lovr.worker.js
57-
SUFFIX_web = .html
5858

5959
## Modules
6060
CFLAGS_@(AUDIO) += -DLOVR_ENABLE_AUDIO
@@ -245,7 +245,9 @@ endif
245245
ifeq ($(PLATFORM),win32)
246246
CFLAGS += $(CFLAGS_win32) $(CFLAGS_y_win32)
247247
LDFLAGS += $(LDFLAGS_win32) $(LDFLAGS_y_win32)
248+
EXTRAS += $(EXTRAS_win32) $(EXTRAS_y_win32)
248249
LIBS += $(LIBS_y_win32)
250+
SUFFIX = .exe
249251
endif
250252

251253
ifeq ($(PLATFORM),macosx)
@@ -265,12 +267,14 @@ ifeq ($(PLATFORM),android)
265267
CFLAGS += $(CFLAGS_android) $(CFLAGS_y_android)
266268
LDFLAGS += $(LDFLAGS_android) $(LDFLAGS_y_android)
267269
LIBS += $(LIBS_y_android)
270+
SUFFIX = .so
268271
endif
269272

270273
ifeq ($(PLATFORM),web)
271274
CFLAGS += $(CFLAGS_web) $(CFLAGS_y_web)
272275
LDFLAGS += $(LDFLAGS_web) $(LDFLAGS_y_web)
273276
LIBS += $(LIBS_y_web)
277+
SUFFIX = .html
274278
endif
275279

276280
CFLAGS += $(FLAGS) $(FLAGS_y)

deps/ode

Submodule ode updated 1 file

deps/openvr

Submodule openvr updated 113 files

src/api/api.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ int luax_typeerror(lua_State* L, int index, const char* expected) {
108108
} else {
109109
name = luaL_typename(L, index);
110110
}
111-
const char* message = lua_pushfstring(L, "%s expected, got %s", name, expected);
111+
const char* message = lua_pushfstring(L, "%s expected, got %s", expected, name);
112112
return luaL_argerror(L, index, message);
113113
}
114114

@@ -167,7 +167,7 @@ void _luax_pushtype(lua_State* L, const char* type, uint64_t hash, void* object)
167167
lua_remove(L, -2);
168168
}
169169

170-
int luax_checkenum(lua_State* L, int index, const StringEntry* map, const char* fallback, const char* label) {
170+
int _luax_checkenum(lua_State* L, int index, const StringEntry* map, const char* fallback, const char* label) {
171171
size_t length;
172172
const char* string = fallback ? luaL_optlstring(L, index, fallback, &length) : luaL_checklstring(L, index, &length);
173173

src/api/api.h

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ extern const luaL_Reg lovrSliderJoint[];
5050
extern const luaL_Reg lovrSoundData[];
5151
extern const luaL_Reg lovrSource[];
5252
extern const luaL_Reg lovrSphereShape[];
53+
extern const luaL_Reg lovrMeshShape[];
5354
extern const luaL_Reg lovrTexture[];
5455
extern const luaL_Reg lovrTextureData[];
5556
extern const luaL_Reg lovrThread[];
@@ -66,39 +67,39 @@ typedef struct {
6667

6768
#define ENTRY(s) { sizeof(s) - 1, s }
6869

69-
extern StringEntry ArcModes[];
70-
extern StringEntry AttributeTypes[];
71-
extern StringEntry BlendAlphaModes[];
72-
extern StringEntry BlendModes[];
73-
extern StringEntry BlockTypes[];
74-
extern StringEntry BufferUsages[];
75-
extern StringEntry CompareModes[];
76-
extern StringEntry CoordinateSpaces[];
77-
extern StringEntry Devices[];
78-
extern StringEntry DeviceAxes[];
79-
extern StringEntry DeviceButtons[];
80-
extern StringEntry DrawModes[];
81-
extern StringEntry DrawStyles[];
82-
extern StringEntry EventTypes[];
83-
extern StringEntry FilterModes[];
84-
extern StringEntry HeadsetDrivers[];
85-
extern StringEntry HeadsetOrigins[];
86-
extern StringEntry HorizontalAligns[];
87-
extern StringEntry JointTypes[];
88-
extern StringEntry MaterialColors[];
89-
extern StringEntry MaterialScalars[];
90-
extern StringEntry MaterialTextures[];
91-
extern StringEntry ShaderTypes[];
92-
extern StringEntry ShapeTypes[];
93-
extern StringEntry SourceTypes[];
94-
extern StringEntry StencilActions[];
95-
extern StringEntry TextureFormats[];
96-
extern StringEntry TextureTypes[];
97-
extern StringEntry TimeUnits[];
98-
extern StringEntry UniformAccesses[];
99-
extern StringEntry VerticalAligns[];
100-
extern StringEntry Windings[];
101-
extern StringEntry WrapModes[];
70+
extern StringEntry lovrArcMode[];
71+
extern StringEntry lovrAttributeType[];
72+
extern StringEntry lovrBlendAlphaMode[];
73+
extern StringEntry lovrBlendMode[];
74+
extern StringEntry lovrBlockType[];
75+
extern StringEntry lovrBufferUsage[];
76+
extern StringEntry lovrCompareMode[];
77+
extern StringEntry lovrCoordinateSpace[];
78+
extern StringEntry lovrDevice[];
79+
extern StringEntry lovrDeviceAxe[];
80+
extern StringEntry lovrDeviceButton[];
81+
extern StringEntry lovrDrawMode[];
82+
extern StringEntry lovrDrawStyle[];
83+
extern StringEntry lovrEventType[];
84+
extern StringEntry lovrFilterMode[];
85+
extern StringEntry lovrHeadsetDriver[];
86+
extern StringEntry lovrHeadsetOrigin[];
87+
extern StringEntry lovrHorizontalAlign[];
88+
extern StringEntry lovrJointType[];
89+
extern StringEntry lovrMaterialColor[];
90+
extern StringEntry lovrMaterialScalar[];
91+
extern StringEntry lovrMaterialTexture[];
92+
extern StringEntry lovrShaderType[];
93+
extern StringEntry lovrShapeType[];
94+
extern StringEntry lovrSourceType[];
95+
extern StringEntry lovrStencilAction[];
96+
extern StringEntry lovrTextureFormat[];
97+
extern StringEntry lovrTextureType[];
98+
extern StringEntry lovrTimeUnit[];
99+
extern StringEntry lovrUniformAccess[];
100+
extern StringEntry lovrVerticalAlign[];
101+
extern StringEntry lovrWinding[];
102+
extern StringEntry lovrWrapMode[];
102103

103104
// General helpers
104105

@@ -120,7 +121,8 @@ typedef struct {
120121
#define luax_totype(L, i, T) (T*) _luax_totype(L, i, hash64(#T, strlen(#T)))
121122
#define luax_checktype(L, i, T) (T*) _luax_checktype(L, i, hash64(#T, strlen(#T)), #T)
122123
#define luax_pushtype(L, T, o) _luax_pushtype(L, #T, hash64(#T, strlen(#T)), o)
123-
#define luax_pushenum(L, m, x) lua_pushlstring(L, m[x].string, m[x].length)
124+
#define luax_checkenum(L, i, T, x) _luax_checkenum(L, i, lovr ## T, x, #T)
125+
#define luax_pushenum(L, T, x) lua_pushlstring(L, (lovr ## T)[x].string, (lovr ## T)[x].length)
124126
#define luax_checkfloat(L, i) (float) luaL_checknumber(L, i)
125127
#define luax_optfloat(L, i, x) (float) luaL_optnumber(L, i, x)
126128
#define luax_geterror(L) lua_getfield(L, LUA_REGISTRYINDEX, "_lovrerror")
@@ -132,7 +134,7 @@ void* _luax_totype(lua_State* L, int index, uint64_t hash);
132134
void* _luax_checktype(lua_State* L, int index, uint64_t hash, const char* debug);
133135
int luax_typeerror(lua_State* L, int index, const char* expected);
134136
void _luax_pushtype(lua_State* L, const char* name, uint64_t hash, void* object);
135-
int luax_checkenum(lua_State* L, int index, const StringEntry* map, const char* fallback, const char* label);
137+
int _luax_checkenum(lua_State* L, int index, const StringEntry* map, const char* fallback, const char* label);
136138
void luax_registerloader(lua_State* L, lua_CFunction loader, int index);
137139
int luax_resume(lua_State* T, int n);
138140
void luax_vthrow(void* L, const char* format, va_list args);

src/api/l_audio.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
#include "core/ref.h"
88
#include <stdlib.h>
99

10-
StringEntry SourceTypes[] = {
10+
StringEntry lovrSourceType[] = {
1111
[SOURCE_STATIC] = ENTRY("static"),
1212
[SOURCE_STREAM] = ENTRY("stream"),
1313
{ 0 }
1414
};
1515

16-
StringEntry TimeUnits[] = {
16+
StringEntry lovrTimeUnit[] = {
1717
[UNIT_SECONDS] = ENTRY("seconds"),
1818
[UNIT_SAMPLES] = ENTRY("samples"),
1919
{ 0 }
@@ -122,7 +122,7 @@ static int l_lovrAudioNewSource(lua_State* L) {
122122
Source* source = NULL;
123123
SoundData* soundData = luax_totype(L, 1, SoundData);
124124
AudioStream* stream = luax_totype(L, 1, AudioStream);
125-
bool isStatic = soundData || luax_checkenum(L, 2, SourceTypes, NULL, "SourceType") == SOURCE_STATIC;
125+
bool isStatic = soundData || luax_checkenum(L, 2, SourceType, NULL) == SOURCE_STATIC;
126126

127127
if (isStatic) {
128128
if (soundData) {

src/api/l_audio_source.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ static int l_lovrSourceGetCone(lua_State* L) {
2727

2828
static int l_lovrSourceGetDuration(lua_State* L) {
2929
Source* source = luax_checktype(L, 1, Source);
30-
TimeUnit unit = luax_checkenum(L, 2, TimeUnits, "seconds", "TimeUnit");
30+
TimeUnit unit = luax_checkenum(L, 2, TimeUnit, "seconds");
3131
size_t duration = lovrSourceGetDuration(source);
3232

3333
if (unit == UNIT_SECONDS) {
@@ -100,7 +100,7 @@ static int l_lovrSourceGetSampleRate(lua_State* L) {
100100

101101
static int l_lovrSourceGetType(lua_State* L) {
102102
Source* source = luax_checktype(L, 1, Source);
103-
luax_pushenum(L, SourceTypes, lovrSourceGetType(source));
103+
luax_pushenum(L, SourceType, lovrSourceGetType(source));
104104
return 1;
105105
}
106106

@@ -157,7 +157,7 @@ static int l_lovrSourcePlay(lua_State* L) {
157157

158158
static int l_lovrSourceSeek(lua_State* L) {
159159
Source* source = luax_checktype(L, 1, Source);
160-
TimeUnit unit = luax_checkenum(L, 3, TimeUnits, "seconds", "TimeUnit");
160+
TimeUnit unit = luax_checkenum(L, 3, TimeUnit, "seconds");
161161

162162
if (unit == UNIT_SECONDS) {
163163
float seconds = luax_checkfloat(L, 2);
@@ -257,7 +257,7 @@ static int l_lovrSourceStop(lua_State* L) {
257257

258258
static int l_lovrSourceTell(lua_State* L) {
259259
Source* source = luax_checktype(L, 1, Source);
260-
TimeUnit unit = luax_checkenum(L, 2, TimeUnits, "seconds", "TimeUnit");
260+
TimeUnit unit = luax_checkenum(L, 2, TimeUnit, "seconds");
261261
size_t offset = lovrSourceTell(source);
262262

263263
if (unit == UNIT_SECONDS) {

src/api/l_data.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ static int l_lovrDataNewTextureData(lua_State* L) {
118118
if (lua_type(L, 1) == LUA_TNUMBER) {
119119
int width = luaL_checkinteger(L, 1);
120120
int height = luaL_checkinteger(L, 2);
121-
TextureFormat format = luax_checkenum(L, 3, TextureFormats, "rgba", "TextureFormat");
121+
TextureFormat format = luax_checkenum(L, 3, TextureFormat, "rgba");
122122
Blob* blob = lua_isnoneornil(L, 4) ? NULL : luax_checktype(L, 4, Blob);
123123
textureData = lovrTextureDataCreate(width, height, blob, 0x0, format);
124124
} else {

src/api/l_data_textureData.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ static int l_lovrTextureDataGetDimensions(lua_State* L) {
3030

3131
static int l_lovrTextureDataGetFormat(lua_State* L) {
3232
TextureData* textureData = luax_checktype(L, 1, TextureData);
33-
luax_pushenum(L, TextureFormats, textureData->format);
33+
luax_pushenum(L, TextureFormat, textureData->format);
3434
return 1;
3535
}
3636

src/api/l_event.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include <stdlib.h>
88
#include <string.h>
99

10-
StringEntry EventTypes[] = {
10+
StringEntry lovrEventType[] = {
1111
[EVENT_QUIT] = ENTRY("quit"),
1212
[EVENT_RESTART] = ENTRY("restart"),
1313
[EVENT_FOCUS] = ENTRY("focus"),
@@ -21,7 +21,7 @@ StringEntry EventTypes[] = {
2121
{ 0 }
2222
};
2323

24-
StringEntry KeyCodes[] = {
24+
StringEntry lovrKeyCode[] = {
2525
[KEY_A] = ENTRY("a"),
2626
[KEY_B] = ENTRY("b"),
2727
[KEY_C] = ENTRY("c"),
@@ -187,7 +187,7 @@ static int nextEvent(lua_State* L) {
187187
if (event.type == EVENT_CUSTOM) {
188188
lua_pushstring(L, event.data.custom.name);
189189
} else {
190-
luax_pushenum(L, EventTypes, event.type);
190+
luax_pushenum(L, EventType, event.type);
191191
}
192192

193193
switch (event.type) {
@@ -205,13 +205,13 @@ static int nextEvent(lua_State* L) {
205205
return 3;
206206

207207
case EVENT_KEYPRESSED:
208-
luax_pushenum(L, KeyCodes, event.data.key.code);
208+
luax_pushenum(L, KeyCode, event.data.key.code);
209209
lua_pushinteger(L, event.data.key.scancode);
210210
lua_pushboolean(L, event.data.key.repeat);
211211
return 4;
212212

213213
case EVENT_KEYRELEASED:
214-
luax_pushenum(L, KeyCodes, event.data.key.code);
214+
luax_pushenum(L, KeyCode, event.data.key.code);
215215
lua_pushinteger(L, event.data.key.scancode);
216216
return 3;
217217

0 commit comments

Comments
 (0)