Ejemplo n.º 1
0
GameEntity EntityFactory::CreatePlayer(DirectX::XMFLOAT3 position)
{
    EntityManager* pEntity = EntityManager::Instance();
	ResourceManager* pResource = ResourceManager::Instance();

    GameEntity player = pEntity->Create("Player");
    pEntity->AddComponent<RenderComponent>(player, pResource->GetMaterial("ship"), pResource->GetMesh("Ship"));
    pEntity->AddComponent<InputComponent>(player, 5.0f);
    pEntity->AddComponent<CollisionComponent>(player, *pResource->GetMesh("Ship"), XMFLOAT3(0, 0, 0), 0.0007f);
    pEntity->AddComponent<AttackComponent>(player, 5.0f);
    TransformComponent* pTrans = pEntity->AddComponent<TransformComponent>(player, position);
    pTrans->transform.SetScale(.001f);
    PhysicsComponent* pPhysics = pEntity->AddComponent<PhysicsComponent>(player, XMVectorZero(), XMVectorZero());
    pPhysics->drag = 0.60f;
    pPhysics->rotationalDrag = 0.30f;

	GameEntity exhaust = pEntity->Create("Exhaust");
	pEntity->AddComponent<RenderComponent>(exhaust, pResource->GetMaterial("thruster"), pResource->GetMesh("Thruster"))->maskOnly = true;
	TransformComponent* eTrans = pEntity->AddComponent<TransformComponent>(exhaust, position);
	eTrans->transform.Translate(0.0f, 0.0f, -0.3f);
	eTrans->transform.Scale(400.0f);

	pTrans->transform.AddChild(&eTrans->transform);

	// Particles
	Particle p(XMFLOAT4(1, 0, 0, 1),
			   XMFLOAT4(1, 1, 0.1f, 0.8f),
			   XMFLOAT4(1, 0.5f, 0.1f, 0.9f),
			   XMFLOAT3(0, 0, -0.9),
			   XMFLOAT3(0, 0, -0.3),
			   XMFLOAT3(0, 0, 0),
			   0.9f,
			   0.4f,
			   0.1f,
			   0.0f,
			   0);

	ParticleGenerator* pGML = new ParticleGenerator(p, XMFLOAT3( 0.0f,  -0.16f, -1.05f), 0.08f, 0.00001, 10);
	ParticleGenerator* pGMU = new ParticleGenerator(p, XMFLOAT3( 0.0f,  +0.04f, -1.05f), 0.08f, 0.00001, 10);
	ParticleGenerator* pGRU = new ParticleGenerator(p, XMFLOAT3(+0.33f, +0.04f, -1.05f), 0.08f, 0.00001, 10);
	ParticleGenerator* pGLU = new ParticleGenerator(p, XMFLOAT3(-0.33f, +0.04f, -1.05f), 0.08f, 0.00001, 10);
	ParticleGenerator* pGRL = new ParticleGenerator(p, XMFLOAT3(+0.35f, -0.16f, -1.05f), 0.08f, 0.00001, 10);
	ParticleGenerator* pGLL = new ParticleGenerator(p, XMFLOAT3(-0.35f, -0.16f, -1.05f), 0.08f, 0.00001, 10);


	ParticleComponent* pParticles = pEntity->AddComponent<ParticleComponent>(player);
	pParticles->AddGenerator(pGML);
	pParticles->AddGenerator(pGMU);
	pParticles->AddGenerator(pGRU);
	pParticles->AddGenerator(pGLU);
	pParticles->AddGenerator(pGRL);
	pParticles->AddGenerator(pGLL);
    return player;
}
Ejemplo n.º 2
0
GameEntity EntityFactory::CreateAsteroid(DirectX::XMFLOAT3 position, DirectX::XMFLOAT3 velocity, DirectX::XMFLOAT3 acceleration, DirectX::XMFLOAT3 rotation, float scale, int id)
{
    EntityManager* pEntity = EntityManager::Instance();
    ResourceManager* pResource = ResourceManager::Instance();

    GameEntity asteroid = pEntity->Create("Asteroid");
    pEntity->AddComponent<CollisionComponent>(asteroid, 0.95f*scale, position);
    pEntity->AddComponent<AsteroidRenderComponent>(asteroid, id);
    pEntity->AddComponent<RenderComponent>(asteroid, pResource->GetMaterial("asteroid"), pResource->GetMesh("Sphere"));
    pEntity->AddComponent<PhysicsComponent>(asteroid, velocity, acceleration);
    TransformComponent* pTransform = pEntity->AddComponent<TransformComponent>(asteroid, position);
    pTransform->transform.SetRotation(rotation);
    pTransform->transform.SetScale(scale);

    return asteroid;
}
Ejemplo n.º 3
0
int main()
{
	GameManager newManager;

	newManager.Initialize();

	//Load and create objects
	ResourceManager* resourceManager = newManager.GetResourceManager();

	//Loads the meshes from the model file into a
	//simple gameobject hierarchy and returns the root game object
	//Returns null if the model wasn't found
	/*
	GameObject* dwarfObject = newManager.CreateGameObjectsFromModel("data/dwarf2.b3d");
	if(dwarfObject != NULL)
	{
		dwarfObject->GetTransform().SetScale(0.05f,0.05f,0.05f);
		dwarfObject->GetTransform().SetPosition(-3.0f,0.0f,0.0f);
		newManager.AddComponentToGameObject(dwarfObject, new RotateObject(dwarfObject));
	}
	*/
	
	/*
	resourceManager->StoreAndInitMaterial("terrainMaterial", 
										new Diffuse(resourceManager->GetShaderProgram("Diffuse", "../data/Diffuse.vert", "../data/Diffuse.frag"),
										resourceManager->GetTexture2D("data/heightmap4.bmp")));
	
	TerrainHeightMap newTerrain;
	newTerrain.CreateHeightMap(resourceManager->GetTexture2D("data/heightmap4.bmp"), 128);

	//Test
	int numberOfTerrainPatches = newTerrain.GetNumberOfPatches();
	for(int i = 0; i < numberOfTerrainPatches; i++)
	{
		GameObject* terrainObject = new GameObject();
		terrainObject->AddComponent(new MeshRenderer(terrainObject,newTerrain.GetTerrainMeshes()[i], resourceManager->GetMaterial("terrainMaterial")));
		newManager.AddGameObject(terrainObject);
	}
	*/

	
	//TEST 2D OBJECT & Material
	/*
	resourceManager->StoreAndInitMaterial("2DMaterial", 
										new Diffuse2D(resourceManager->GetShaderProgram("Diffuse2D", "../data/Diffuse2D.vert", "../data/Diffuse2D.frag"),
										resourceManager->GetTexture2D("../data/test.bmp")));
	GameObject* cubeObject = new GameObject();
	cubeObject->GetTransform().SetScale(128,128,1);
	cubeObject->GetTransform().SetPosition(Vector3(500,300,0));
	cubeObject->AddComponent(new MeshRenderer(cubeObject,resourceManager->GetPrimitive(PLANE_PRIMITIVE),
	resourceManager->GetMaterial("2DMaterial"), ComponentUpdateStep::Render2DUpdate()));
	newManager.AddGameObject(cubeObject);
	*/
	
	//CDLOD TERRAIN	
	
	resourceManager->StoreAndInitMaterial("TerrainMaterial", 
										new TerrainMaterial(resourceManager->GetShaderProgram("TerrainShader", 
										"../data/Terrain.vert", "../data/Terrain.frag"),resourceManager->GetTexture2D("data/heightmap4.bmp")));

	TerrainCDLOD terrain((Camera*)newManager.GetMainCameraObject()->GetComponent(typeid(Camera)),resourceManager->GetTexture2D("data/heightmap4.bmp"));
	GameObject* terrainObject = new GameObject();
	terrainObject->AddComponent(new TerrainRenderer(terrainObject, &terrain, (TerrainMaterial*)resourceManager->GetMaterial("TerrainMaterial"),newManager.GetGraphicsDevice()));
	newManager.AddGameObject(terrainObject);
	
	
	//Add a movement script to the camera
	GameObject* cameraObject = newManager.GetMainCameraObject();
	newManager.AddComponentToGameObject(cameraObject, new FreeLookCamera(cameraObject));

	newManager.Update();
	newManager.Shutdown();
}