Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jan 18, 2016, 10:12:53 PM (8 years ago)
Author:
landauf
Message:

merged branch 'shaders' into branch 'shaders_merge'

Location:
code/branches/shaders_merge
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/shaders_merge

  • code/branches/shaders_merge/src/orxonox/graphics/Model.cc

    r11071 r11073  
    3737#include "core/XMLPort.h"
    3838#include "Scene.h"
     39#include "RenderQueueListener.h"
    3940#include "graphics/MeshLodInformation.h"
    4041#include "Level.h"
     
    4546
    4647    Model::Model(Context* context) :
    47         StaticEntity(context), bCastShadows_(true), lodLevel_(5), bLodEnabled_(true), numLodLevels_(10), lodReductionRate_(.15f)
     48        StaticEntity(context), bCastShadows_(true), renderQueueGroup_(RENDER_QUEUE_MAIN), lodLevel_(5), bLodEnabled_(true), numLodLevels_(10), lodReductionRate_(.15f)
    4849    {
    4950        RegisterObject(Model);
     
    7273
    7374        XMLPortParam(Model, "mesh", setMeshSource, getMeshSource, xmlelement, mode);
     75        XMLPortParam(Model, "renderQueueGroup", setRenderQueueGroup, getRenderQueueGroup, xmlelement, mode);
     76        XMLPortParam(Model, "material", setMaterial, getMaterial, xmlelement, mode);
    7477        XMLPortParam(Model, "shadow", setCastShadows, getCastShadows, xmlelement, mode).defaultValues(true);
    7578    }
     79   
     80    /**
     81    @brief
     82        This function turns a string from XML Port into a usable ID for the rendering system
     83        It defaults to the main queue if the group isn't recognized.
     84       
     85    @param renderQueueGroup
     86        This is a string representing the render queue group. Accepted values:
     87        'main', 'stencil glow', 'stencil object'
     88    */
     89    const unsigned int Model::getRenderQueueGroupID(const std::string& renderQueueGroup) const
     90    {
     91        if(renderQueueGroup.compare("stencil glow")==0)
     92        {
     93            return RENDER_QUEUE_STENCIL_GLOW;
     94        }
     95        if(renderQueueGroup.compare("stencil object")==0)
     96        {
     97            return RENDER_QUEUE_STENCIL_OBJECTS;
     98        }
     99        return RENDER_QUEUE_MAIN;
     100    }
    76101
    77102    void Model::registerVariables()
    78103    {
    79104        registerVariable(this->meshSrc_,    VariableDirection::ToClient, new NetworkCallback<Model>(this, &Model::changedMesh));
     105        registerVariable(this->renderQueueGroup_,    VariableDirection::ToClient, new NetworkCallback<Model>(this, &Model::changedRenderQueueGroup));
     106        registerVariable(this->materialName_,    VariableDirection::ToClient, new NetworkCallback<Model>(this, &Model::changedMaterial));
    80107        registerVariable(this->bCastShadows_, VariableDirection::ToClient, new NetworkCallback<Model>(this, &Model::changedShadows));
    81108    }
     
    104131                this->attachOgreObject(this->mesh_.getEntity());
    105132                this->mesh_.getEntity()->setCastShadows(this->bCastShadows_);
     133                this->mesh_.getEntity()->setRenderQueueGroup(this->renderQueueGroup_);
    106134                this->mesh_.setVisible(this->isVisible());
    107135
     
    110138            }
    111139        }
     140    }
     141
     142    void Model::changedRenderQueueGroup()
     143    {
     144        if (GameMode::showsGraphics())
     145        {
     146            if (this->mesh_.getEntity())
     147            {
     148                this->mesh_.getEntity()->setRenderQueueGroup(this->renderQueueGroup_);
     149            }
     150        }
     151    }
     152
     153    void Model::changedMaterial()
     154    {
     155        this->mesh_.setMaterial(this->materialName_);
    112156    }
    113157
Note: See TracChangeset for help on using the changeset viewer.