mirror of https://github.com/bjornbytes/lovr.git
Merge branch 'master' into dev
This commit is contained in:
commit
fdb8a2423c
|
@ -124,6 +124,9 @@ else()
|
|||
)
|
||||
list(TRANSFORM LUA_SRC PREPEND deps/lua/)
|
||||
add_library(lua SHARED ${LUA_SRC})
|
||||
target_link_libraries(lua m)
|
||||
target_link_libraries(lua dl)
|
||||
target_compile_definitions(lua PRIVATE -DLUA_USE_DLOPEN)
|
||||
include_directories(deps/lua)
|
||||
set(LOVR_LUA lua)
|
||||
endif()
|
||||
|
@ -608,7 +611,11 @@ endforeach()
|
|||
if(WIN32)
|
||||
target_sources(lovr PRIVATE src/core/os_win32.c)
|
||||
target_sources(lovr PRIVATE src/resources/lovr.rc)
|
||||
set_target_properties(lovr PROPERTIES COMPILE_FLAGS "/wd4244 /MP")
|
||||
if (MSVC)
|
||||
set_target_properties(lovr PROPERTIES COMPILE_FLAGS "/wd4244 /MP")
|
||||
else()
|
||||
set_target_properties(lovr PROPERTIES COMPILE_FLAGS "-MP")
|
||||
endif()
|
||||
if(NOT LOVR_BUILD_SHARED)
|
||||
set_target_properties(lovr PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:console /ENTRY:WinMainCRTStartup")
|
||||
set_target_properties(lovr PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:windows /ENTRY:WinMainCRTStartup")
|
||||
|
|
|
@ -42,6 +42,16 @@ static int luax_meta__tostring(lua_State* L) {
|
|||
static int luax_meta__gc(lua_State* L) {
|
||||
Proxy* p = lua_touserdata(L, 1);
|
||||
if (p) {
|
||||
// Remove from userdata cache
|
||||
lua_getfield(L, LUA_REGISTRYINDEX, "_lovrobjects");
|
||||
if (lua_istable(L, -1)) {
|
||||
lua_pushlightuserdata(L, p->object);
|
||||
lua_pushnil(L);
|
||||
lua_rawset(L, -3);
|
||||
}
|
||||
lua_pop(L, 1);
|
||||
|
||||
// Release
|
||||
lua_getmetatable(L, 1);
|
||||
lua_getfield(L, -1, "__info");
|
||||
TypeInfo* info = lua_touserdata(L, -1);
|
||||
|
|
|
@ -134,9 +134,9 @@ int luax_readmat4(lua_State* L, int index, mat4 m, int scaleComponents) {
|
|||
index = luax_readvec3(L, index, m + 12, "mat4, vec3, or number");
|
||||
index = luax_readscale(L, index, S, scaleComponents, NULL);
|
||||
index = luax_readquat(L, index, R, NULL);
|
||||
m[15] = 1.f;
|
||||
mat4_rotateQuat(m, R);
|
||||
mat4_scale(m, S[0], S[1], S[2]);
|
||||
m[15] = 1.f;
|
||||
return index;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <shellapi.h>
|
||||
#include <KnownFolders.h>
|
||||
#include <ShlObj.h>
|
||||
#include <knownfolders.h>
|
||||
#include <shlobj.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "os_glfw.h"
|
||||
|
|
|
@ -89,6 +89,7 @@ Texture* lovrMaterialGetTexture(Material* material, MaterialTexture textureType)
|
|||
|
||||
void lovrMaterialSetTexture(Material* material, MaterialTexture textureType, Texture* texture) {
|
||||
if (material->textures[textureType] != texture) {
|
||||
lovrAssert(!texture || lovrTextureGetType(texture) == TEXTURE_2D, "Material textures must be 2D");
|
||||
lovrGraphicsFlushMaterial(material);
|
||||
lovrRetain(texture);
|
||||
lovrRelease(material->textures[textureType], lovrTextureDestroy);
|
||||
|
|
|
@ -2655,15 +2655,23 @@ Shader* lovrShaderCreateGraphics(const char* vertexSource, int vertexSourceLengt
|
|||
|
||||
char* flagSource = lovrShaderGetFlagCode(flags, flagCount);
|
||||
|
||||
if (!vertexSource) {
|
||||
vertexSource = lovrUnlitVertexShader;
|
||||
vertexSourceLength = -1;
|
||||
}
|
||||
|
||||
if (!fragmentSource) {
|
||||
fragmentSource = lovrUnlitFragmentShader;
|
||||
fragmentSourceLength = -1;
|
||||
}
|
||||
|
||||
// Vertex
|
||||
vertexSource = vertexSource == NULL ? lovrUnlitVertexShader : vertexSource;
|
||||
const char* vertexSources[] = { version, computeExtensions, singlepass[0], flagSource ? flagSource : "", lovrShaderVertexPrefix, vertexSource, lovrShaderVertexSuffix };
|
||||
int vertexSourceLengths[] = { -1, -1, -1, -1, -1, vertexSourceLength, -1 };
|
||||
int vertexSourceCount = sizeof(vertexSources) / sizeof(vertexSources[0]);
|
||||
GLuint vertexShader = compileShader(GL_VERTEX_SHADER, vertexSources, vertexSourceLengths, vertexSourceCount);
|
||||
|
||||
// Fragment
|
||||
fragmentSource = fragmentSource == NULL ? lovrUnlitFragmentShader : fragmentSource;
|
||||
const char* fragmentSources[] = { version, computeExtensions, singlepass[1], flagSource ? flagSource : "", lovrShaderFragmentPrefix, fragmentSource, lovrShaderFragmentSuffix };
|
||||
int fragmentSourceLengths[] = { -1, -1, -1, -1, -1, fragmentSourceLength, -1 };
|
||||
int fragmentSourceCount = sizeof(fragmentSources) / sizeof(fragmentSources[0]);
|
||||
|
|
|
@ -154,8 +154,7 @@ static bool vrapi_getViewPose(uint32_t view, float* position, float* orientation
|
|||
mat4_invert(transform);
|
||||
mat4_getPosition(transform, position);
|
||||
mat4_getOrientation(transform, orientation);
|
||||
uint32_t mask = VRAPI_TRACKING_STATUS_POSITION_VALID | VRAPI_TRACKING_STATUS_ORIENTATION_VALID;
|
||||
return (tracking.Status & mask) == mask;
|
||||
return tracking.Status & VRAPI_TRACKING_STATUS_ORIENTATION_VALID;
|
||||
}
|
||||
|
||||
static bool vrapi_getViewAngles(uint32_t view, float* left, float* right, float* up, float* down) {
|
||||
|
@ -165,8 +164,7 @@ static bool vrapi_getViewAngles(uint32_t view, float* left, float* right, float*
|
|||
mat4_init(projection, (float*) &tracking.Eye[view].ProjectionMatrix);
|
||||
mat4_transpose(projection);
|
||||
mat4_getFov(projection, left, right, up, down);
|
||||
uint32_t mask = VRAPI_TRACKING_STATUS_POSITION_VALID | VRAPI_TRACKING_STATUS_ORIENTATION_VALID;
|
||||
return (tracking.Status & mask) == mask;
|
||||
return tracking.Status & VRAPI_TRACKING_STATUS_ORIENTATION_VALID;
|
||||
}
|
||||
|
||||
static void vrapi_getClipDistance(float* clipNear, float* clipFar) {
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
"actions" : [
|
||||
{ "name" : "/actions/lovr/in/leftHandPose", "type" : "pose" },
|
||||
{ "name" : "/actions/lovr/in/rightHandPose", "type" : "pose" },
|
||||
{ "name" : "/actions/lovr/in/leftHandPoint", "type" : "pose" },
|
||||
{ "name" : "/actions/lovr/in/rightHandPoint", "type" : "pose" },
|
||||
{ "name" : "/actions/lovr/in/leftElbowPose", "type" : "pose" },
|
||||
{ "name" : "/actions/lovr/in/rightElbowPose", "type" : "pose" },
|
||||
{ "name" : "/actions/lovr/in/leftShoulderPose", "type" : "pose" },
|
||||
|
@ -76,6 +78,8 @@
|
|||
{
|
||||
"/actions/lovr/in/leftHandPose": "Left Hand Pose",
|
||||
"/actions/lovr/in/rightHandPose": "Right Hand Pose",
|
||||
"/actions/lovr/in/leftHandPoint": "Left Hand Point",
|
||||
"/actions/lovr/in/rightHandPoint": "Right Hand Point",
|
||||
"/actions/lovr/in/leftTriggerDown": "Left Trigger Press",
|
||||
"/actions/lovr/in/leftTriggerTouch": "Left Trigger Touch",
|
||||
"/actions/lovr/in/leftTriggerAxis": "Left Trigger Axis",
|
||||
|
|
Loading…
Reference in New Issue