void EffectChain::loadSettings( const QDomElement & _this ) { clear(); // TODO This method should probably also lock the mixer m_enabledModel.loadSettings( _this, "enabled" ); const int plugin_cnt = _this.attribute( "numofeffects" ).toInt(); QDomNode node = _this.firstChild(); int fx_loaded = 0; while( !node.isNull() && fx_loaded < plugin_cnt ) { if( node.isElement() && node.nodeName() == "effect" ) { QDomElement effectData = node.toElement(); const QString name = effectData.attribute( "name" ); EffectKey key( effectData.elementsByTagName( "key" ).item( 0 ).toElement() ); Effect* e = Effect::instantiate( name.toUtf8(), this, &key ); if( e != NULL && e->isOkay() && e->nodeName() == node.nodeName() ) { e->restoreState( effectData ); } else { delete e; e = new DummyEffect( parentModel(), effectData ); } m_effects.push_back( e ); ++fx_loaded; } node = node.nextSibling(); } emit dataChanged(); }
void GameObject::update() { mat4 parentModel(1.0f); if (m_ParentGameObject) { parentModel = m_ParentGameObject->getModelMatrix(); } mat4 translationMatrix = translate(mat4(1.0f), m_Position); mat4 scaleMatrix = scale(mat4(1.0f), m_Scale); mat4 rotationMatrix = rotate(mat4(1.0f), m_Rotation.x, vec3(1.0f, 0.0f, 0.0f))* rotate(mat4(1.0f), m_Rotation.y, vec3(0.0f, 1.0f, 0.0f))* rotate(mat4(1.0f), m_Rotation.z, vec3(0.0f, 0.0f, 1.0f)); m_ModelMatrix = scaleMatrix*rotationMatrix*translationMatrix; m_ModelMatrix *= parentModel; for (auto iter = m_ChildGameObjects.begin(); iter != m_ChildGameObjects.end(); iter++) { (*iter)->update(); } }