diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-18 14:56:05 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-18 14:56:05 +0200 |
commit | 0fdebc7d7a143ad2b9b5ed6a596bf4bb1f0f7d7f (patch) | |
tree | 7400cea54bc40b01f64cf91c26a4ae20980a64cc /mwe/ecs-homemade/src | |
parent | a2c719948ff8af9abe267c4d1c9b16cd1e2fb317 (diff) | |
parent | 77555730e3ddb811b9ce8470659663e3f1573de2 (diff) |
merge master into loek/scripts
Diffstat (limited to 'mwe/ecs-homemade/src')
-rw-r--r-- | mwe/ecs-homemade/src/Components.cpp | 12 | ||||
-rw-r--r-- | mwe/ecs-homemade/src/main.cpp | 16 |
2 files changed, 28 insertions, 0 deletions
diff --git a/mwe/ecs-homemade/src/Components.cpp b/mwe/ecs-homemade/src/Components.cpp index c8347b3..de8753e 100644 --- a/mwe/ecs-homemade/src/Components.cpp +++ b/mwe/ecs-homemade/src/Components.cpp @@ -9,3 +9,15 @@ Rigidbody::Rigidbody(int mass, int gravityScale, int bodyType) : mMass(mass), mGravityScale(gravityScale), mBodyType(bodyType) {} Colider::Colider(int size) : mSize(size) {} + +void BehaviourScript::onStart() { + if (behaviour) { + behaviour->onStart(); + } +} + +void BehaviourScript::onUpdate() { + if (behaviour) { + behaviour->onUpdate(); + } +} diff --git a/mwe/ecs-homemade/src/main.cpp b/mwe/ecs-homemade/src/main.cpp index 330e154..70c5d2c 100644 --- a/mwe/ecs-homemade/src/main.cpp +++ b/mwe/ecs-homemade/src/main.cpp @@ -7,6 +7,13 @@ #include "Components.h" #include "GameObjectMax.h" +class myScript { +public: + void onStart() { std::cout << "In onStart" << std::endl; } + + void onUpdate() { std::cout << "In onUpdate" << std::endl; } +}; + int main() { auto startAdding = std::chrono::high_resolution_clock::now(); @@ -18,6 +25,7 @@ int main() { gameObject[i]->AddComponent<Sprite>("C:/Test"); gameObject[i]->AddComponent<Rigidbody>(0, 0, i); gameObject[i]->AddComponent<Colider>(i); + gameObject[i]->AddComponent<BehaviourScript>().addScript<myScript>(); } auto stopAdding = std::chrono::high_resolution_clock::now(); @@ -44,6 +52,14 @@ int main() { //std::cout << colider.get().mSize << std::endl; } + std::vector<std::reference_wrapper<BehaviourScript>> scripts + = ComponentManager::GetInstance() + .GetComponentsByType<BehaviourScript>(); + for (BehaviourScript & script : scripts) { + //script.onStart(); + //script.onUpdate(); + } + auto stopLooping = std::chrono::high_resolution_clock::now(); for (int i = 0; i < 100000; ++i) { |