Major changes

* Added Game module
* Changed scripts for testing
* Cleanup

Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
This commit is contained in:
2021-05-13 13:44:19 +02:00
parent 6db13f7cf2
commit e1f4f80c8b

View File

@@ -4,32 +4,18 @@
#include <evol/common/ev_profile.h> #include <evol/common/ev_profile.h>
#include <evol/utils/sleep.h> #include <evol/utils/sleep.h>
#define TYPE_MODULE evmod_glfw #define IMPORT_MODULE evmod_glfw
#include <evol/meta/type_import.h> #include IMPORT_MODULE_H
#define NAMESPACE_MODULE evmod_glfw #define IMPORT_MODULE evmod_ecs
#include <evol/meta/namespace_import.h> #include IMPORT_MODULE_H
#define EVENT_MODULE evmod_glfw #define IMPORT_MODULE evmod_physics
#include <evol/meta/event_include.h> #include IMPORT_MODULE_H
#define IMPORT_MODULE evmod_script
#define TYPE_MODULE evmod_ecs #include IMPORT_MODULE_H
#include <evol/meta/type_import.h> #define IMPORT_MODULE evmod_assetsystem
#define NAMESPACE_MODULE evmod_ecs #include IMPORT_MODULE_H
#include <evol/meta/namespace_import.h> #define IMPORT_MODULE evmod_game
#include IMPORT_MODULE_H
#define TYPE_MODULE evmod_physics
#include <evol/meta/type_import.h>
#define NAMESPACE_MODULE evmod_physics
#include <evol/meta/namespace_import.h>
#define TYPE_MODULE evmod_script
#include <evol/meta/type_import.h>
#define NAMESPACE_MODULE evmod_script
#include <evol/meta/namespace_import.h>
#define TYPE_MODULE evmod_assetsystem
#include <evol/meta/type_import.h>
#define NAMESPACE_MODULE evmod_assetsystem
#include <evol/meta/namespace_import.h>
// Close window when Q is pressed // Close window when Q is pressed
DECLARE_EVENT_LISTENER(keyPressedListener, (KeyPressedEvent *event) { DECLARE_EVENT_LISTENER(keyPressedListener, (KeyPressedEvent *event) {
@@ -46,6 +32,8 @@ DECLARE_EVENT_LISTENER(keyPressedListener, (KeyPressedEvent *event) {
IMPORT_NAMESPACE(CollisionShape, physics_module); \ IMPORT_NAMESPACE(CollisionShape, physics_module); \
IMPORT_NAMESPACE(Script , script_module); \ IMPORT_NAMESPACE(Script , script_module); \
IMPORT_NAMESPACE(AssetSystem , asset_module); \ IMPORT_NAMESPACE(AssetSystem , asset_module); \
IMPORT_NAMESPACE(Game , game_module); \
IMPORT_NAMESPACE(Object , game_module); \
} while (0) } while (0)
int main(int argc, char **argv) int main(int argc, char **argv)
@@ -60,6 +48,7 @@ int main(int argc, char **argv)
evolmodule_t input_module = evol_loadmodule("input"); DEBUG_ASSERT(input_module); evolmodule_t input_module = evol_loadmodule("input"); DEBUG_ASSERT(input_module);
evolmodule_t physics_module = evol_loadmodule("physics"); DEBUG_ASSERT(physics_module); evolmodule_t physics_module = evol_loadmodule("physics"); DEBUG_ASSERT(physics_module);
evolmodule_t asset_module = evol_loadmodule("asset-importer"); DEBUG_ASSERT(asset_module); evolmodule_t asset_module = evol_loadmodule("asset-importer"); DEBUG_ASSERT(asset_module);
evolmodule_t game_module = evol_loadmodule("game"); DEBUG_ASSERT(game_module);
IMPORT_NAMESPACES; IMPORT_NAMESPACES;
IMPORT_EVENTS_evmod_glfw(window_module); IMPORT_EVENTS_evmod_glfw(window_module);
@@ -73,23 +62,20 @@ int main(int argc, char **argv)
Script->initECS(); Script->initECS();
Physics->initECS(); Physics->initECS();
Game->initECS();
ECSEntityID ent1 = ECS->createEntity(); ECSEntityID playerBox = ECS->createEntity();
ECSEntityID ent2 = ECS->createEntity(); ECSEntityID childBox = ECS->createChild(playerBox);
ScriptHandle ent1ScriptHandle = Script->new("Entity1Script", ECSEntityID ground = ECS->createEntity();
/* "this.on_update = function ()\n" */
/* " rb = this:getComponent(Rigidbody)\n" */
/* " rb:addForce(Vec3:new(2, 0, 0))\n" */
/* "end" */
""
);
ScriptHandle ent2ScriptHandle = Script->new("Entity2Script",
ScriptHandle childBoxScript = Script->new("Entity1Script", "");
ScriptHandle playerBoxScript = Script->new("Entity2Script",
"this.on_update = function () \n" "this.on_update = function () \n"
" rb = this:getComponent(Rigidbody) \n" " rb = this:getComponent(Rigidbody) \n"
" if Input.getKeyDown(Input.KeyCode.Space) then \n" " if Input.getKeyDown(Input.KeyCode.Space) then \n"
" rb:addForce(Vec3:new(0, 100, 0))\n" " this.position = Vec3:new(-1, 5, -10) \n"
" end \n" " end \n"
" if Input.getKeyDown(Input.KeyCode.D) then \n" " if Input.getKeyDown(Input.KeyCode.D) then \n"
" rb:addForce(Vec3:new(10, 0, 0)) \n" " rb:addForce(Vec3:new(10, 0, 0)) \n"
@@ -103,37 +89,44 @@ int main(int argc, char **argv)
" if Input.getKeyDown(Input.KeyCode.S) then \n" " if Input.getKeyDown(Input.KeyCode.S) then \n"
" rb:addForce(Vec3:new(0, 0, 10)) \n" " rb:addForce(Vec3:new(0, 0, 10)) \n"
" end \n" " end \n"
"end" "end \n"
); );
Script->addToEntity(ent1, ent1ScriptHandle); Script->addToEntity(playerBox, playerBoxScript);
Script->addToEntity(ent2, ent2ScriptHandle); Script->addToEntity(childBox, childBoxScript);
CollisionShapeHandle boxCollider = CollisionShape->newBox(Vec3new(1., 1., 1.)); CollisionShapeHandle boxCollider = CollisionShape->newBox(Vec3new(1., 1., 1.));
CollisionShapeHandle groundCollider = CollisionShape->newBox(Vec3new(5., 5., 5.)); CollisionShapeHandle groundCollider = CollisionShape->newBox(Vec3new(5., 5., 5.));
RigidbodyInfo rbInfo = { Object->setPosition(childBox, Vec3new(1, 7, -10 ));
Object->setRotation(childBox, Vec4new(0, 0, 0, 1));
Object->setScale(childBox, Vec3new(1, 1, 1 ));
Object->setPosition(playerBox, Vec3new(-1, 5, -10 ));
Object->setRotation(playerBox, Vec4new( 0, 0, 0, 1));
Object->setScale(playerBox, Vec3new( 1, 1, 1 ));
Object->setPosition(ground, Vec3new(0, -10, -10 ));
Object->setRotation(ground, Vec4new(0, 0, 0, 1));
Object->setScale(ground, Vec3new(1, 1, 1 ));
RigidbodyHandle childRigidbody = Rigidbody->addToEntity(childBox, &(RigidbodyInfo) {
.type = EV_RIGIDBODY_KINEMATIC,
.collisionShape = boxCollider,
});
RigidbodyHandle playerRigidbody = Rigidbody->addToEntity(playerBox, &(RigidbodyInfo) {
.type = EV_RIGIDBODY_DYNAMIC, .type = EV_RIGIDBODY_DYNAMIC,
.collisionShape = boxCollider, .collisionShape = boxCollider,
.mass = 1.0, .mass = 1.0,
.restitution = 0.0 });
};
RigidbodyHandle box = Rigidbody->new(&rbInfo);
Rigidbody->setPosition(box, Vec3new(1, 5, -10));
Rigidbody->addToEntity(ent1, box);
RigidbodyHandle box2 = Rigidbody->new(&rbInfo);
Rigidbody->setPosition(box2, Vec3new(-1, 5, -10));
Rigidbody->addToEntity(ent2, box2);
RigidbodyInfo groundRbInfo = { RigidbodyInfo groundRbInfo = {
.type = EV_RIGIDBODY_STATIC, .type = EV_RIGIDBODY_STATIC,
.collisionShape = groundCollider, .collisionShape = groundCollider,
.restitution = 0.0
}; };
RigidbodyHandle ground = Rigidbody->new(&groundRbInfo);
Rigidbody->setPosition(ground, Vec3new(0, -10, -10)); RigidbodyHandle groundRigidbody = Rigidbody->addToEntity(ground, &groundRbInfo);
rmt_SetCurrentThreadName("Main Thread"); rmt_SetCurrentThreadName("Main Thread");
@@ -157,14 +150,10 @@ int main(int argc, char **argv)
result |= ECS->update(0); result |= ECS->update(0);
} }
// Remove the following section
/* RigidbodyHandle testHandle = Rigidbody->getFromEntity(ent1); */
/* Vec3 pos = Rigidbody->getPosition(testHandle); */
/* printf("Current position of Entity1 = (%f, %f, %f)\n", pos.x, pos.y, pos.z); */
sleep_ms(17); sleep_ms(17);
} }
evol_unloadmodule(game_module);
evol_unloadmodule(physics_module); evol_unloadmodule(physics_module);
evol_unloadmodule(input_module); evol_unloadmodule(input_module);
evol_unloadmodule(asset_module); evol_unloadmodule(asset_module);