diff options
| -rw-r--r-- | Makefile | 37 | ||||
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | src/client/lua_api/gui/iguielement.cpp | 2 | ||||
| -rw-r--r-- | src/client/lua_api/video/iimage.cpp | 15 | ||||
| -rw-r--r-- | src/shared/lua_api/common.hpp | 1 | ||||
| -rw-r--r-- | src/shared/lua_api/load_phys.cpp | 6 | ||||
| -rw-r--r-- | src/shared/lua_api/phys/bphysgeneric.cpp | 41 |
7 files changed, 85 insertions, 18 deletions
@@ -6,6 +6,7 @@ else UNAME:=$(shell uname -s) endif +CP=cp ifeq ($(UNAME), Windows) EXE_EXT=.exe STA_LIB_EXT=.a @@ -121,7 +122,7 @@ endif S_LDFLAGS= $(SERVER_LIBS) C_LDFLAGS= $(CLIENT_LIBS) ifeq ($(UNAME),Windows) - C_LDFLAGS += -mwindows -lwinmm + C_LDFLAGS += -mwindows -lwinmm -lstdc++ ifeq ($(DEBUG),true) else @@ -170,7 +171,7 @@ CLIENT_OBJS = $(BUILD_DIR)/$(CLIENTNAME)/main.o $(CLIENT_SRCS) $(SHARED_CLIENT_O #Compile the client $(BIN_DIR)/$(CLIENTNAME)/bin/$(EX_PRE)$(CLIENTNAME)$(EXE_EXT) : $(CLIENT_OBJS) $(LIB_OBJS) @echo "[CLIENT] Building binary $@" - @$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(C_LDFLAGS) $(LIB_OBJS) # -Wl,--verbose + $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(C_LDFLAGS) $(LIB_OBJS) # -Wl,--verbose # does not have .hpp associated $(BUILD_DIR)/$(CLIENTNAME)/main.o : $(SRC_DIR)/client/main.cpp @@ -209,7 +210,7 @@ $(SHARED_SERVER_OBJS) : $(BUILD_DIR)/$(SERVERNAME)/%.o : $(SRC_DIR)/shared/%.cpp $(LIBLUA) : $(ILUADIR)/Makefile @echo "Could not find $(LIBLUA), rebuilding" cd $(ILUADIR) && $(MAKE) "BUILDMODE= static" - cp $(ILUADIR)/libluajit.a lib + $(CP) $(ILUADIR)/libluajit.a lib IRRMAKEFLAGS= IRRMADELIB= @@ -232,7 +233,7 @@ endif # Library - Irrlicht $(LIB_S_IRR) : $(IRRMADELIB)/libIrrlicht.a - cp $^ $@ + $(CP) $^ $@ $(IRRMADELIB)/libIrrlicht.a : $(LIRRDIR)/source/Irrlicht/Makefile sed --in-place=OLD '107s/ -ld3dx9d//' lib/irrlicht/source/Irrlicht/Makefile @@ -240,10 +241,10 @@ $(IRRMADELIB)/libIrrlicht.a : $(LIRRDIR)/source/Irrlicht/Makefile $(LIB_D_IRR) : $(IRRMADELIB)/Irrlicht$(DYN_LIB_EXT) @echo "Could not find $@, remaking..." - cp $^ $@ + $(CP) $^ $@ $(BIN_DIR)/$(CLIENTNAME)/bin/Irrlicht$(DYN_LIB_EXT) : $(IRRMADELIB)/Irrlicht$(DYN_LIB_EXT) - cp $^ $@ + $(CP) $^ $@ $(IRRMADELIB)/Irrlicht$(DYN_LIB_EXT) : $(LIRRDIR)/source/Irrlicht/Makefile sed --in-place=OLD '107s/ -ld3dx9d//' lib/irrlicht/source/Irrlicht/Makefile @@ -258,23 +259,27 @@ endif # Library - Lua # Client $(BIN_DIR)/$(CLIENTNAME)/bin/lua51$(DYN_LIB_EXT) : $(LIB_D_LUA) - cp $^ $@ + $(CP) $^ $@ # Server $(BIN_DIR)/$(SERVERNAME)/bin/lua51$(DYN_LIB_EXT) : $(LIB_D_LUA) - cp $^ $@ + $(CP) $^ $@ $(LLUADIR)/src/libluajit$(STA_LIB_EXT) : $(LLUADIR)/src/Makefile +<<<<<<< HEAD + $(CP) $(LLUADIR)/src && make "BUILDMODE= static" +======= cd $(LLUADIR)/src && $(MAKE) $(LUAJIT_ARGS) "BUILDMODE= static" +>>>>>>> 3623bc70af309d1823c664a8129956da6c0e9c4a $(LIB_S_LUA) : $(LLUADIR)/src/libluajit$(STA_LIB_EXT) - cp $^ $@ + $(CP) $^ $@ $(LLUADIR)/src/lua51$(DYN_LIB_EXT) : $(LLUADIR)/src/Makefile cd $(LLUADIR)/src && $(MAKE) $(LUAJIT_ARGS) "BUILDMODE= dynamic" $(LIB_D_LUA) : $(LLUADIR)/src/lua51$(DYN_LIB_EXT) - cp $^ $@ + $(CP) $^ $@ # Library - Bullet $(LBULDIR)/lib/libBulletCollision.a : $(LBULDIR)/Makefile @@ -287,13 +292,13 @@ $(LBULDIR)/lib/libLinearMath.a : $(LBULDIR)/Makefile cd $(LBULDIR) && $(MAKE) LinearMath $(LIB_D_BCO) : $(LBULDIR)/lib/libBulletCollision.a - cp $^ $@ + $(CP) $^ $@ $(LIB_D_BDY) : $(LBULDIR)/lib/libBulletDynamics.a - cp $^ $@ + $(CP) $^ $@ $(LIB_D_BLM) : $(LBULDIR)/lib/libLinearMath.a - cp $^ $@ + $(CP) $^ $@ $(LBULDIR)/Makefile : $(LBULDIR)/CMakeLists.txt cd $(LBULDIR) && cmake $(CMAKE_FLAGS) -DBUILD_EXTRAS=off -DBUILD_DEMOS=off @@ -301,10 +306,10 @@ $(LBULDIR)/Makefile : $(LBULDIR)/CMakeLists.txt # Library - NNG NNGFLAGS= $(BIN_DIR)/$(CLIENTNAME)/bin/libnng$(DYN_LIB_EXT) : $(LIB_D_NNG) - cp $^ $@ + $(CP) $^ $@ $(BIN_DIR)/$(SERVERNAME)/bin/libnng$(DYN_LIB_EXT) : $(LIB_D_NNG) - cp $^ $@ + $(CP) $^ $@ $(LNNGDIR)/dynamic : $(LNNGDIR)/CMakeLists.txt mkdir $@ @@ -341,7 +346,7 @@ test: $(TEST_BINS) @./busted busted.spec $(TEST_BINS) : test/bin/% : bin/client/bin/% - cp $^ $@ + $(CP) $^ $@ $(TEST_PATH)test_stream : $(TEST_SRC)test_streams.cpp $(SHARED_SRC)/lua_api/stream.cpp $(SHARED_SRC)/lua_api/stream.hpp @$(CC) $(CFLAGS) -o $(TEST_PATH)test_stream $(TEST_SRC)test_streams.cpp $(SHARED_SRC)/lua_api/stream.cpp $(SHARED_SRC)/lua_api/stream.hpp @@ -10,6 +10,7 @@ Binaries will not be provided until Brok[en]gine reaches version 1.0, if you wan 1. Use [git](git-scm.com) to download this with submodules `git clone --recurse-submodules https://cogarr.net/source/cgi.cgit/brokengine` 2. Download make, g++, ect. Windows users can use [mingw](https://mingw.org). Open a terminal and cd into this folder, and run `make DEBUG=true` + 1. For some god-awful reason, when useing MSYS2 under windows, you need to define MSYSTEM=MINGW64 as an environment variable to get luajit to compile. `set MSYSTEM=MINGW64` 3. Binaries can be found in bin/(client|server)/bin/ 4. Initally ran scripts can be found at bin/(client|server)/data/init.lua diff --git a/src/client/lua_api/gui/iguielement.cpp b/src/client/lua_api/gui/iguielement.cpp index 7e8163d..5c51c15 100644 --- a/src/client/lua_api/gui/iguielement.cpp +++ b/src/client/lua_api/gui/iguielement.cpp @@ -17,7 +17,7 @@ extern "C" { #include <lualib.h> } - +#include <stdio.h> #include <shared/lua_api/common.hpp> #include <irrlicht.h> #include "../guiparts.hpp" diff --git a/src/client/lua_api/video/iimage.cpp b/src/client/lua_api/video/iimage.cpp index 6fbf6c5..4c7795d 100644 --- a/src/client/lua_api/video/iimage.cpp +++ b/src/client/lua_api/video/iimage.cpp @@ -135,9 +135,24 @@ int getiimagepixel(lua_State* L){ return 1; } +/*** +Returns the dimensions of the image +@function iimage:getDimensions() +@treturn vec2i dimensions The dimensions of the image +*/ +//getdimensions({self}) +int getiimagedimensions(lua_State *L){ + lua_getfield(L,-1,"image"); + IImage *img = (IImage*)lua_touserdata(L,-1); + core::dimension2d<u32> dims = img->getDimension(); + pushvector2i(L,dims.Height, dims.Width); + return 1; +} + static const luaL_reg iimage_m[] = { {"setpixel", setiimagepixel}, {"getpixel", getiimagepixel}, + {"getdimensions", getiimagedimensions}, {0,0}, }; diff --git a/src/shared/lua_api/common.hpp b/src/shared/lua_api/common.hpp index 0b7abd6..583ab1e 100644 --- a/src/shared/lua_api/common.hpp +++ b/src/shared/lua_api/common.hpp @@ -1,6 +1,7 @@ #ifndef __broken_shared_lua_common #define __broken_shared_lua_common +#define set_const(l,x) lua_pushstring(l,#x);lua_pushinteger(l,x);lua_settable(l,-3); extern "C" { #include <lua.h> #include <lauxlib.h> diff --git a/src/shared/lua_api/load_phys.cpp b/src/shared/lua_api/load_phys.cpp index 6875970..7580e99 100644 --- a/src/shared/lua_api/load_phys.cpp +++ b/src/shared/lua_api/load_phys.cpp @@ -1,10 +1,16 @@ #include "load_phys.hpp" #include "phys/bphysbox.hpp" #include "phys/bhingeconstraint.hpp" +#include <btBulletDynamicsCommon.h> +#include <shared/lua_api/common.hpp> void load_physfuncs(lua_State* L){ lua_newtable(L);//{} lua_setglobal(L,"phys"); + set_const(L,BT_DISABLE_WORLD_GRAVITY); + set_const(L,BT_ENABLE_GYROSCOPIC_FORCE_EXPLICIT); + set_const(L,BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_WORLD); + set_const(L,BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_BODY); bphysbox_register(L); bhingeconstraint_register(L); } diff --git a/src/shared/lua_api/phys/bphysgeneric.cpp b/src/shared/lua_api/phys/bphysgeneric.cpp index 44c789d..5faef2d 100644 --- a/src/shared/lua_api/phys/bphysgeneric.cpp +++ b/src/shared/lua_api/phys/bphysgeneric.cpp @@ -18,7 +18,12 @@ extern "C" { node = ISceneNode, } */ - +btRigidBody* popRigidBody(lua_State *L){ + lua_getfield(L,-1,"rigidbody"); + btRigidBody *r = (btRigidBody*)lua_touserdata(L,-1); + lua_pop(L,2); + return r; +} /*** Sets the direction of gravity on this object. @function rigidbody:setgravity({x,y,z}) @@ -215,9 +220,42 @@ int setdamping(lua_State *L){ return 0; } +/*** +Sets flags on this rigidbody +@function rigidbody:setflags(flags) +@tparam number flags +*/ +int setflags(lua_State *L){ + int flags = lua_tonumber(L,-1); + lua_pop(L,1); + + lua_getfield(L,-1,"rigidbody"); + btRigidBody *r = (btRigidBody*)lua_touserdata(L,-1); + lua_pop(L,2); + + r->setFlags(flags); + + return 0; +} + +/*** +Apply an impulse to the rigidboy +@function rigidbody:centralimpulse(vec3 impulse) +@tparam vector3 impulse The direction to apply the impulse in +*/ +int applyimpulse(lua_State *L){ + double x,y,z,ox,oy,oz; + popvector3d(L,&x,&y,&z); + popvector3d(L,&ox,&oy,&oz); + btRigidBody *r = popRigidBody(L); + r->applyImpulse(btVector3(x,y,z),btVector3(ox,oy,oz)); + return 0; +} + extern const luaL_reg brigidbody_m[] = { {"setgravity", setgravity}, {"applyforce", applyforce}, + {"applyimpulse", applyimpulse}, {"getldamping", getlineardamping}, {"getadamping", getangulardamping}, {"setdamping", setdamping}, @@ -225,5 +263,6 @@ extern const luaL_reg brigidbody_m[] = { {"getvelocity", getvelocity}, {"setvelocity", setvelocity}, {"setangfactor", setangfactor}, + {"setflags", setflags}, {NULL, NULL} }; |
