aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile37
-rw-r--r--README.md1
-rw-r--r--src/client/lua_api/gui/iguielement.cpp2
-rw-r--r--src/client/lua_api/video/iimage.cpp15
-rw-r--r--src/shared/lua_api/common.hpp1
-rw-r--r--src/shared/lua_api/load_phys.cpp6
-rw-r--r--src/shared/lua_api/phys/bphysgeneric.cpp41
7 files changed, 85 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index 4b86147..a019bcd 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/README.md b/README.md
index 937dfa6..5a1a77d 100644
--- a/README.md
+++ b/README.md
@@ -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}
};