aboutsummaryrefslogtreecommitdiff
path: root/mwe/ecs-homemade/src/main.cpp
blob: 73f710bd77c3a591cf0878f245e504068179cad0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <vector>
#include <cstdint>

#include "ComponentManager.h"
#include "GameObjectMax.h"
#include "Components.h"

int main() {
	GameObject gameObect0(0, "Name: 0", "Tag: 0", 0);	//Entity 0
	GameObject gameObect1(1, "Name: 1", "Tag: 1", 1);	//Entity 1

	//Sprite sprite0;
	//Rigidbody rigidbody0(1, 2, 3);
	gameObect0.AddComponent<Sprite>();			//Add a sprite to entity0
	gameObect0.AddComponent<Rigidbody>(1, 2, 3);	//Also add a rigidbody to entity0

	//Rigidbody rigidbody1(4, 5, 6);
	gameObect1.AddComponent<Rigidbody>(4, 5, 6);	//Only add a rigidbody to entity1

	//The entities are now initialized
	//Now I will demonstrate some ways of retreiving/getting components

	std::vector<std::reference_wrapper<Rigidbody>> rigidbodyOfEntity0 = ComponentManager::GetInstance().GetComponentsOfID<Rigidbody>(gameObect0.mId);			//Get the pointer to the Rigidbody component of entity 0
	std::cout << "rigidbodyOfEntity0: " << rigidbodyOfEntity0[0].get().mMass << " " << rigidbodyOfEntity0[0].get().mGravityScale << " " << rigidbodyOfEntity0[0].get().mBodyType << std::endl;
	std::cout << std::endl;

	/*std::vector<std::uint32_t> rigidbodyIDs = ComponentManager::GetInstance().GetAllComponentIDs<Rigidbody>();			//Get all the IDs that have a Rigidbody component
	for(std::uint32_t ID : rigidbodyIDs) {
		std::cout << "Rigidbody ID: " << ID << std::endl;
	}
	std::cout << std::endl;

	std::vector<Rigidbody*> rigidbodyComponents = ComponentManager::GetInstance().GetAllComponentPointer<Rigidbody>();	//Get all the pointers to the Rigidbody component(s)
	for(Rigidbody* rigidbody : rigidbodyComponents) {
		std::cout << "rigidbody: " << rigidbody->mMass << " " << rigidbody->mGravityScale << " " << rigidbody->mBodyType << std::endl;
	}
	std::cout << std::endl;*/
}