コード例 #1
0
void InputSystem::StandStill(EntityID pEntityID)
{
	ComponentTable* tCompTable = tCompTable->GetInstance();

	tCompTable->AddComponent(pEntityID, ComponentType::VelocityType);

	VelocityComponent* tVel = GetComponent<VelocityComponent>(pEntityID);
	tVel->mDirection = vec3(0.0f, 0.0f, 0.0f);
}
コード例 #2
0
void TriggerSystem::Update(double pDeltaTime)
{
	if (mCreateNextLevel)
	{
		mCurrentLevel++;
		//if we have enough maps
		if (mMapNames.size() - 1 >= mCurrentLevel)
		{
			LevelManager::GetInstance()->GenerateWorld(mMapNames[mCurrentLevel]);
		}
		mCreateNextLevel = false;
	}



	EntityManager* tEntMan = tEntMan->GetInstance();
	ComponentTable* tCompTable = tCompTable->GetInstance();

	int tMaxEnt = tEntMan->GetLastEntity();

	mNumOfBallsActive = 0;
	mNumOfGoalBlocksActive = 0;

	//check how many balls we have active and goals cause why not
	for (int i = 0; i < tMaxEnt; i++)
	{
		if (tCompTable->HasComponent(i, LabelType))
		{
			Label tLabel = GetComponent<LabelComponent>(i)->mLabel;

			if (tLabel == Label::Ball)
			{
				mNumOfBallsActive++;
			}
			else if (tLabel == Label::GoalBlock)
			{
				mNumOfGoalBlocksActive++;
			}
		}
	}

	//if no goal blocks, we go to next map, even if we can do this by event, we might explode or something that doesn't trigger, not sure how we want it
	if (mNumOfGoalBlocksActive == 0 && mNumOfBallsActive != 0)
	{
		//DEBUG
#ifdef _DEBUG
		cout << "WARNING - MAP HAS NO GOAL LEFT, EITHER WRONG IN MAP OR SOME REALLY WIERD BUG" << endl;
#endif
		//END DEBUG
	}

	


}
コード例 #3
0
void InputSystem::Update(double pDeltaTime)
{
	mKeyState = SDL_GetKeyboardState(NULL);
	CheckKeyboard();
	//HandleInput();

	EntityManager* tEntManager = tEntManager->GetInstance();
	ComponentTable* tCompTable = tCompTable->GetInstance();
	int tMaxEnt = tEntManager->GetLastEntity();

	for (int i = 0; i < tMaxEnt; i++)
	{
		if (tCompTable->HasComponent(i, ComponentType::LabelType))
		{
			LabelComponent* tLabel = GetComponent<LabelComponent>(i);

			if (tLabel->mLabel == Label::Pad)
			{
				//find input we want to check for TODO:: maybe fix input into bit array?
				HandleInput(i);
			}
		}
	}


	//cout << "running input system";
	//EventManager::Payload tPayload;
	//tPayload["test"] = MessageInt(5);

 //	void* tDebugData = malloc(4);
	//void* tDebugData2 = malloc(4);
	//*(int*)tDebugData = 4;
	//*(int*)tDebugData2 = 5;

	////memcpy(tDebugData, &data, 4);
	////memcpy(tDebugData2, &data2, 4);
	//tPayload["Debugdata"] = tDebugData;
	//tPayload["Test"] = tDebugData2;
	//cout << "Sending event";
	//mEventManager->BroadcastEvent("DebugTest", tPayload);
	//cout << "event sent, resuming input system update";




}
コード例 #4
0
EntityID EntityFactory::CreateEntity(std::string pTemplateName)
{
    EntityBlueprint tComponentMap = mEntityBlueprints[pTemplateName];
    EntityManager* tEntityManager = tEntityManager->GetInstance();
    ComponentTable* tComponentTable = tComponentTable->GetInstance();

    //create a new ID
    EntityID tNewEntityID = tEntityManager->AddEntity();

    //copy components
    for (EntityBlueprint::iterator iter = tComponentMap.begin(); iter != tComponentMap.end(); ++iter)
    {
        tComponentTable->AddComponent(tNewEntityID, iter->first);

        if (iter->first == ComponentType::PhysicType)
        {
            memcpy(GetComponent<PhysicComponent>(tNewEntityID), iter->second, sizeof(PhysicComponent));
        }
        else if (iter->first == ComponentType::TransformType)
        {
            memcpy(GetComponent<TransformComponent>(tNewEntityID), iter->second, sizeof(TransformComponent));
        }
        else if (iter->first == ComponentType::MeshType)
        {
            memcpy(GetComponent<MeshComponent>(tNewEntityID), iter->second, sizeof(MeshComponent));
        }
        else if (iter->first == ComponentType::LabelType)
        {
            memcpy(GetComponent<LabelComponent>(tNewEntityID), iter->second, sizeof(LabelComponent));
        }
        else if (iter->first == ComponentType::VelocityType)
        {
            memcpy(GetComponent<VelocityComponent>(tNewEntityID), iter->second, sizeof(VelocityComponent));
        }
        else if (iter->first == ComponentType::CollisionType)
        {
            memcpy(GetComponent<CollisionComponent>(tNewEntityID), iter->second, sizeof(CollisionComponent));
        }
        else if (iter->first == ComponentType::VelocityForceType)
        {
            memcpy(GetComponent<VelocityForceComponent>(tNewEntityID), iter->second, sizeof(VelocityForceComponent));
        }
        else if (iter->first == ComponentType::SoundCollisionType)
        {
            memcpy(GetComponent<SoundCollisionComponent>(tNewEntityID), iter->second, sizeof(SoundCollisionComponent));
        }
        else if (iter->first == ComponentType::AttachedType)
        {
            memcpy(GetComponent<AttachedComponent>(tNewEntityID), iter->second, sizeof(AttachedComponent));
        }
        else if (iter->first == ComponentType::ScoreValueType)
        {
            memcpy(GetComponent<ScoreValueComponent>(tNewEntityID), iter->second, sizeof(ScoreValueComponent));
        }
        else if (iter->first == ComponentType::MenyButtonType)
        {
            memcpy(GetComponent<MenyButtonComponent>(tNewEntityID), iter->second, sizeof(MenyButtonComponent));
        }
        else if (iter->first == ComponentType::PowerUpType)
        {
            memcpy(GetComponent<PowerUpComponent>(tNewEntityID), iter->second, sizeof(PowerUpComponent));
        }
        else if (iter->first == ComponentType::PowerUpContainType)
        {
            memcpy(GetComponent<PowerUpContainComponenet>(tNewEntityID), iter->second, sizeof(PowerUpContainComponenet));
        }
        else if (iter->first == ComponentType::EmitterType)
        {
            memcpy(GetComponent<EmitterComponent>(tNewEntityID), iter->second, sizeof(EmitterComponent));
        }


    }

    return tNewEntityID;
}
コード例 #5
0
#include "sut.h"

#include "ComponentTable.h"
#include "Entity.h"

struct Component1
{
    float x, y;
};

DESCRIBE("Component Table")

IT("can create components and retrieve them using entity as key",
{
    ComponentTable<Component1> sut;
    Entity e(1);

    sut.create(e);
    auto &created_component = sut.get(e);
    S_ASSERT(0.0f == created_component.x, "component not created correctly");
});

IT ("can destroy and create components",
{
    // Arrange
    ComponentTable<Component1> sut;
    Entity e(1);
    Entity e2(2);

    // Act
    sut.create(e);