scaling
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#include <string.h>
|
||||
#include "debugdraw.h"
|
||||
#include "log.h"
|
||||
#include "math.h"
|
||||
|
||||
#include "stb_ds.h"
|
||||
|
||||
@@ -129,7 +130,9 @@ static void velocityFn(cpBody *body, cpVect gravity, cpFloat damping, cpFloat dt
|
||||
}
|
||||
|
||||
cpFloat d = isnan(go->damping) ? damping : d;
|
||||
cpVect g = go->gravity ? gravity : go->cgravity.cp;
|
||||
cpVect g = gravity;
|
||||
if (isfinite(go->gravity.x) && isfinite(go->gravity.y))
|
||||
g = go->gravity.cp;
|
||||
|
||||
cpBodyUpdateVelocity(body,g,d,dt*go->timescale);
|
||||
|
||||
@@ -154,9 +157,8 @@ gameobject *MakeGameobject() {
|
||||
.next = -1,
|
||||
.drawlayer = 0,
|
||||
.shape_cbs = NULL,
|
||||
.gravity = 1,
|
||||
.cgravity = (HMM_Vec2){0,0},
|
||||
.damping = NAN,
|
||||
.gravity = (HMM_Vec2){INFINITY,INFINITY},
|
||||
.damping = INFINITY,
|
||||
.timescale = 1.0,
|
||||
.ref = JS_UNDEFINED,
|
||||
};
|
||||
|
||||
@@ -36,8 +36,7 @@ struct gameobject {
|
||||
float timescale;
|
||||
float maxvelocity;
|
||||
float maxangularvelocity;
|
||||
int gravity;
|
||||
HMM_Vec2 cgravity;
|
||||
HMM_Vec2 gravity; /* its own gravity */
|
||||
float damping;
|
||||
unsigned int layer;
|
||||
cpShapeFilter filter;
|
||||
|
||||
@@ -1173,10 +1173,9 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
|
||||
ret = num2js(js2gameobject(argv[1])->damping);
|
||||
break;
|
||||
case 158:
|
||||
js2gameobject(argv[1])->gravity = js2bool(argv[2]);
|
||||
break;
|
||||
case 159:
|
||||
ret = bool2js(js2gameobject(argv[1])->gravity);
|
||||
ret = vec2js(js2gameobject(argv[1])->gravity);
|
||||
break;
|
||||
case 160:
|
||||
ret = vec2js(mat_t_dir(t_world2go(js2gameobject(argv[1])), js2vec2(argv[2])));
|
||||
@@ -1205,7 +1204,7 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
|
||||
ret = int2js(cp(str, str2));
|
||||
break;
|
||||
case 167:
|
||||
js2gameobject(argv[1])->cgravity = js2vec2(argv[2]);
|
||||
js2gameobject(argv[1])->gravity = js2vec2(argv[2]);
|
||||
break;
|
||||
case 168:
|
||||
js2gameobject(argv[1])->timescale = js2number(argv[2]);
|
||||
|
||||
@@ -123,8 +123,8 @@ static void process_frame()
|
||||
if (stm_sec(stm_diff(frame_t, updatelast)) > updateMS) {
|
||||
double dt = stm_sec(stm_diff(frame_t, updatelast));
|
||||
updatelast = frame_t;
|
||||
|
||||
// prof_start(&prof_update);
|
||||
|
||||
call_updates(dt * timescale);
|
||||
// prof_lap(&prof_update);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user