Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 10, 2008, 2:06:09 AM (16 years ago)
Author:
landauf
Message:
  • Added new XMLPort mode, ExpandObject, which works like LoadObject but doesn't use default values if there are missing parameters. This is used if an object is expanded by templates (like adding CameraPositions).
  • Changed default level to sample3.oxw in objecthierarchy2 branch
  • Small fix with doubly added clients in Level- and PlayerManager
Location:
code/branches/objecthierarchy2/src/core
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • code/branches/objecthierarchy2/src/core/BaseObject.cc

    r2171 r2173  
    109109            std::list<std::string> eventnames;
    110110
    111             if (mode == XMLPort::LoadObject)
     111            if (mode == XMLPort::LoadObject || mode == XMLPort::ExpandObject)
    112112            {
    113113                for (ticpp::Iterator<ticpp::Element> child = events->FirstChildElement(false); child != child.end(); child++)
  • code/branches/objecthierarchy2/src/core/CorePrereqs.h

    r2087 r2173  
    6969    {
    7070      LoadObject,
    71       SaveObject
     71      SaveObject,
     72      ExpandObject
    7273    };
    7374  }
  • code/branches/objecthierarchy2/src/core/Template.cc

    r2171 r2173  
    4343
    4444        this->bIsLink_ = false;
     45        this->bLoadDefaults_ = true;
    4546        this->bIsReturningXMLElement_ = false;
    4647        this->baseclassIdentifier_ = 0;
     
    5657        SUPER(Template, XMLPort, xmlelement, mode);
    5758
    58         XMLPortParam(Template, "link", setLink, getLink, xmlelement, mode);
    59         XMLPortParam(Template, "baseclass", setBaseclass, getBaseclass, xmlelement, mode);
     59        XMLPortParam(Template, "link",      setLink,         getLink,         xmlelement, mode);
     60        XMLPortParam(Template, "baseclass", setBaseclass,    getBaseclass,    xmlelement, mode);
     61        XMLPortParam(Template, "defaults",  setLoadDefaults, getLoadDefaults, xmlelement, mode).defaultValues(true);
    6062
    6163        Element* element = xmlelement.FirstChildElement(false);
     
    134136
    135137        Element temp = ((TiXmlElement*)&this->getXMLElement());
    136         object->XMLPort(temp, XMLPort::LoadObject);
     138
     139        if (this->bLoadDefaults_)
     140            object->XMLPort(temp, XMLPort::LoadObject);
     141        else
     142            object->XMLPort(temp, XMLPort::ExpandObject);
    137143    }
    138144
  • code/branches/objecthierarchy2/src/core/Template.h

    r2171 r2173  
    5353                { return this->link_; }
    5454
     55            inline void setLoadDefaults(bool bLoadDefaults)
     56                { this->bLoadDefaults_ = bLoadDefaults; }
     57            inline bool getLoadDefaults() const
     58                { return this->bLoadDefaults_; }
     59
    5560            inline void setXMLElement(const TiXmlElement& xmlelement)
    5661                { this->xmlelement_ = xmlelement; }
     
    7580            Identifier* baseclassIdentifier_;
    7681            bool bIsLink_;
     82            bool bLoadDefaults_;
    7783            mutable bool bIsReturningXMLElement_;
    7884    };
  • code/branches/objecthierarchy2/src/core/XMLPort.h

    r2171 r2173  
    336336                this->parseParams_.mode = mode;
    337337
    338                 if (mode == XMLPort::LoadObject)
     338                if ((mode == XMLPort::LoadObject) || (mode == XMLPort::ExpandObject))
    339339                {
    340340                    try
    341341                    {
    342342                        std::string attribute = xmlelement.GetAttribute(this->paramname_);
    343                         if ((attribute.size() > 0) || (this->loadexecutor_->allDefaultValuesSet()))
     343                        if ((attribute.size() > 0) || ((mode != XMLPort::ExpandObject) && this->loadexecutor_->allDefaultValuesSet()))
    344344                        {
    345345                            COUT(5) << this->owner_->getLoaderIndentation() << "Loading parameter " << this->paramname_ << " in " << this->identifier_->getName() << " (objectname " << this->owner_->getName() << ")." << std::endl << this->owner_->getLoaderIndentation();
    346                             if (this->loadexecutor_->parse(object, attribute, ","))
     346                            if (this->loadexecutor_->parse(object, attribute, ",") || (mode  == XMLPort::ExpandObject))
    347347                                this->parseResult_ = PR_finished;
    348348                            else
    349349                                this->parseResult_ = PR_waiting_for_default_values;
    350350                        }
     351                        else if (mode == XMLPort::ExpandObject)
     352                            this->parseResult_ = PR_finished;
    351353                        else
    352354                            this->parseResult_ = PR_waiting_for_default_values;
     
    473475            XMLPortObjectContainer& port(T* object, Element& xmlelement, XMLPort::Mode mode)
    474476            {
    475                 if (mode == XMLPort::LoadObject)
     477                if ((mode == XMLPort::LoadObject) || (mode == XMLPort::ExpandObject))
    476478                {
    477479                    try
Note: See TracChangeset for help on using the changeset viewer.