コード例 #1
0
SystemManager::~SystemManager()
{
	RemoveAllComponents();
	CheckRemovableComponents();

	EntityComponentTable::iterator itTemplate = m_vTemplateTable.begin();
	for (; itTemplate != m_vTemplateTable.end(); ++itTemplate)
	{
		MGDVector<Component*>::iterator itComponent = (*itTemplate).second.begin();
		for (; itComponent != (*itTemplate).second.end(); ++itComponent)
		{
			delete((*itComponent));
		}
	}

	m_vTemplateTable.clear();

	MGDVector<SystemTable>::iterator it = m_vPerPhaseSystemArray.begin();
	for(; it != m_vPerPhaseSystemArray.end(); ++it)
	{
		SystemTable::iterator itSystem = (*it).begin();
		for(; itSystem != (*it).end(); ++itSystem)
		{
			delete((*itSystem).second);
		}
	}
}
コード例 #2
0
ファイル: Node.cpp プロジェクト: acremean/urho3d
Node::~Node()
{
    RemoveAllChildren();
    RemoveAllComponents();
    
    // Remove from the scene
    if (scene_)
        scene_->NodeRemoved(this);
}
コード例 #3
0
ファイル: Entity.cpp プロジェクト: DNSMorgan/ChilliSource
//------------------------------------------------------------------
//------------------------------------------------------------------
void Entity::Reset()
{
    RemoveAllComponents();
    RemoveAllChildren();
    RemoveFromParent();

    m_name = std::string();
    m_transform.Reset();
}
コード例 #4
0
ファイル: Node.cpp プロジェクト: acremean/urho3d
bool Node::LoadXML(const XMLElement& source, SceneResolver& resolver, bool readChildren, bool rewriteIDs, CreateMode mode)
{
    // Remove all children and components first in case this is not a fresh load
    RemoveAllChildren();
    RemoveAllComponents();
    
    if (!Serializable::LoadXML(source))
        return false;
    
    XMLElement compElem = source.GetChild("component");
    while (compElem)
    {
        String typeName = compElem.GetAttribute("type");
        unsigned compID = compElem.GetInt("id");
        Component* newComponent = CreateComponent(ShortStringHash(typeName),
            (mode == REPLICATED && compID < FIRST_LOCAL_ID) ? REPLICATED : LOCAL, rewriteIDs ? 0 : compID);
        if (newComponent)
        {
            resolver.AddComponent(compID, newComponent);
            if (!newComponent->LoadXML(compElem))
                return false;
        }
        
        compElem = compElem.GetNext("component");
    }
    
    if (!readChildren)
        return true;
    
    XMLElement childElem = source.GetChild("node");
    while (childElem)
    {
        unsigned nodeID = childElem.GetInt("id");
        Node* newNode = CreateChild(rewriteIDs ? 0 : nodeID, (mode == REPLICATED && nodeID < FIRST_LOCAL_ID) ? REPLICATED :
            LOCAL);
        resolver.AddNode(nodeID, newNode);
        if (!newNode->LoadXML(childElem, resolver, readChildren, rewriteIDs, mode))
            return false;
        
        childElem = childElem.GetNext("node");
    }
    
    return true;
}
コード例 #5
0
ファイル: Node.cpp プロジェクト: acremean/urho3d
bool Node::Load(Deserializer& source, SceneResolver& resolver, bool readChildren, bool rewriteIDs, CreateMode mode)
{
    // Remove all children and components first in case this is not a fresh load
    RemoveAllChildren();
    RemoveAllComponents();
    
    // ID has been read at the parent level
    if (!Serializable::Load(source))
        return false;
    
    unsigned numComponents = source.ReadVLE();
    for (unsigned i = 0; i < numComponents; ++i)
    {
        VectorBuffer compBuffer(source, source.ReadVLE());
        ShortStringHash compType = compBuffer.ReadShortStringHash();
        unsigned compID = compBuffer.ReadUInt();
        Component* newComponent = CreateComponent(compType,
            (mode == REPLICATED && compID < FIRST_LOCAL_ID) ? REPLICATED : LOCAL, rewriteIDs ? 0 : compID);
        if (newComponent)
        {
            resolver.AddComponent(compID, newComponent);
            if (!newComponent->Load(compBuffer))
                return false;
        }
    }
    
    if (!readChildren)
        return true;
    
    unsigned numChildren = source.ReadVLE();
    for (unsigned i = 0; i < numChildren; ++i)
    {
        unsigned nodeID = source.ReadUInt();
        Node* newNode = CreateChild(rewriteIDs ? 0 : nodeID, (mode == REPLICATED && nodeID < FIRST_LOCAL_ID) ? REPLICATED :
            LOCAL);
        resolver.AddNode(nodeID, newNode);
        if (!newNode->Load(source, resolver, readChildren, rewriteIDs, mode))
            return false;
    }
    
    return true;
}
コード例 #6
0
ファイル: Camera.cpp プロジェクト: Gr390ry/Shade
	void Camera::Release()
	{
		RemoveAllComponents();
	}
コード例 #7
0
ファイル: Entity.cpp プロジェクト: DNSMorgan/ChilliSource
//-------------------------------------------------------------
//-------------------------------------------------------------
Entity::~Entity()
{
    RemoveAllComponents();
    RemoveAllChildren();
}
コード例 #8
0
ファイル: Actor.cpp プロジェクト: caioteixeira/SpaceRacer
Actor::~Actor()
{
	mGame.GetTime().ClearAllTimers(this);
	RemoveAllChildren();
	RemoveAllComponents();
}
コード例 #9
0
ファイル: Prop.cpp プロジェクト: Gr390ry/Shade
	void Prop::Release()
	{
		RemoveAllComponents();
	}
コード例 #10
0
ファイル: Entity.cpp プロジェクト: Azurelol/Samples
Entity::~Entity()
{
  RemoveAllComponents();
}