physics
This commit is contained in:
parent
98abf43449
commit
51d273b8fb
4 changed files with 52 additions and 2 deletions
|
|
@ -9,6 +9,9 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GSDECL void GSPhysicsInit(void);
|
GSDECL void GSPhysicsInit(void);
|
||||||
|
GSDECL GSPhysics GSPhysicsCreate(GSServer server);
|
||||||
|
GSDECL void GSPhysicsDestroy(GSPhysics physics);
|
||||||
|
GSDECL void GSPhysicsStep(GSPhysics physics);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,7 @@ typedef struct _GSSound* GSSound;
|
||||||
typedef struct _GSNetClient* GSNetClient;
|
typedef struct _GSNetClient* GSNetClient;
|
||||||
typedef struct _GSNetServer* GSNetServer;
|
typedef struct _GSNetServer* GSNetServer;
|
||||||
typedef struct _GSNetSocket* GSNetSocket;
|
typedef struct _GSNetSocket* GSNetSocket;
|
||||||
|
typedef struct _GSPhysics* GSPhysics;
|
||||||
|
|
||||||
typedef struct _GSModelFace GSModelFace;
|
typedef struct _GSModelFace GSModelFace;
|
||||||
typedef struct _GSModelMaterial GSModelMaterial;
|
typedef struct _GSModelMaterial GSModelMaterial;
|
||||||
|
|
@ -86,6 +87,7 @@ typedef void* GSSound;
|
||||||
typedef void* GSNetClient;
|
typedef void* GSNetClient;
|
||||||
typedef void* GSNetServer;
|
typedef void* GSNetServer;
|
||||||
typedef void* GSNetSocket;
|
typedef void* GSNetSocket;
|
||||||
|
typedef void* GSPhysics;
|
||||||
#endif
|
#endif
|
||||||
typedef float GSNumber;
|
typedef float GSNumber;
|
||||||
typedef GSNumber GSVector2[2];
|
typedef GSNumber GSVector2[2];
|
||||||
|
|
@ -311,6 +313,13 @@ struct _GSNetSocket {
|
||||||
GSBool client;
|
GSBool client;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _GSPhysics {
|
||||||
|
GSEngine engine;
|
||||||
|
|
||||||
|
dWorldID world;
|
||||||
|
dSpaceID space;
|
||||||
|
};
|
||||||
|
|
||||||
struct _GSClient {
|
struct _GSClient {
|
||||||
GSEngine engine;
|
GSEngine engine;
|
||||||
|
|
||||||
|
|
@ -343,6 +352,8 @@ struct _GSServer {
|
||||||
GSEngine engine;
|
GSEngine engine;
|
||||||
|
|
||||||
GSNetServer net;
|
GSNetServer net;
|
||||||
|
|
||||||
|
GSPhysics physics;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GSEngineLog {
|
struct _GSEngineLog {
|
||||||
|
|
|
||||||
|
|
@ -7,3 +7,30 @@
|
||||||
void GSPhysicsInit(void) {
|
void GSPhysicsInit(void) {
|
||||||
dInitODE2(0);
|
dInitODE2(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GSPhysics GSPhysicsCreate(GSServer server) {
|
||||||
|
GSPhysics physics = malloc(sizeof(*physics));
|
||||||
|
|
||||||
|
memset(physics, 0, sizeof(*physics));
|
||||||
|
|
||||||
|
physics->engine = server->engine;
|
||||||
|
|
||||||
|
physics->world = dWorldCreate();
|
||||||
|
physics->space = dSimpleSpaceCreate(0);
|
||||||
|
|
||||||
|
GSLog(server->engine, GSLogInfo, "Created physics engine");
|
||||||
|
|
||||||
|
return physics;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GSPhysicsDestroy(GSPhysics physics) {
|
||||||
|
dSpaceDestroy(physics->space);
|
||||||
|
dWorldDestroy(physics->world);
|
||||||
|
|
||||||
|
GSLog(physics->engine, GSLogInfo, "Destroyed physics engine");
|
||||||
|
|
||||||
|
free(physics);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GSPhysicsStep(GSPhysics physics) {
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include <GearSrc/Log.h>
|
#include <GearSrc/Log.h>
|
||||||
#include <GearSrc/Net.h>
|
#include <GearSrc/Net.h>
|
||||||
|
#include <GearSrc/Physics.h>
|
||||||
|
|
||||||
GSServer GSServerCreate(GSEngine engine) {
|
GSServer GSServerCreate(GSEngine engine) {
|
||||||
GSServer server = malloc(sizeof(*server));
|
GSServer server = malloc(sizeof(*server));
|
||||||
|
|
@ -17,6 +18,13 @@ GSServer GSServerCreate(GSEngine engine) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((server->physics = GSPhysicsCreate(server)) == NULL) {
|
||||||
|
GSLog(engine, GSLogError, "Failed to create physics engine");
|
||||||
|
GSServerDestroy(server);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
GSLog(engine, GSLogInfo, "Created server");
|
GSLog(engine, GSLogInfo, "Created server");
|
||||||
|
|
||||||
return server;
|
return server;
|
||||||
|
|
@ -24,6 +32,7 @@ GSServer GSServerCreate(GSEngine engine) {
|
||||||
|
|
||||||
void GSServerDestroy(GSServer server) {
|
void GSServerDestroy(GSServer server) {
|
||||||
if(server->net != NULL) GSNetServerClose(server->net);
|
if(server->net != NULL) GSNetServerClose(server->net);
|
||||||
|
if(server->physics != NULL) GSPhysicsDestroy(server->physics);
|
||||||
|
|
||||||
GSLog(server->engine, GSLogInfo, "Destroyed server");
|
GSLog(server->engine, GSLogInfo, "Destroyed server");
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue