moDirectorStatus moEffectLayerTimelineCtrl::ValueUpdated( moValueDescriptor p_ValueDesc ) { switch(p_ValueDesc.GetParamDescriptor().GetParamDefinition().GetType() ) { case MO_PARAM_TEXTURE: //LOAD IMAGE.... //Log("loading background"); if ( p_ValueDesc.GetParamDescriptor().GetParamDefinition().GetType()==MO_PARAM_TEXTURE && p_ValueDesc.GetValue().GetSubValueCount()>=1 ) { moText tname = p_ValueDesc.GetValue().GetSubValue(0).Text(); if(tname!=m_BackgroundName) { m_BackgroundName = tname; moTextureDescriptor pTextDescriptor( GetResourceDescriptor( moTextureDescriptor( tname ) ) ); //m_BackgroundImage.LoadFile( moText2Wx( pTextDescriptor.GetResourceDefinition().GetFileName() ) ); Refresh(); } } break; default: break; } return MO_DIRECTOR_STATUS_OK; }
moDirectorStatus moTreeLayerCtrl::ValueUpdated( moValueDescriptor p_ValueDesc ) { //recorre los mobs a ver a quien le pertenece!!! este valor y se lo pasa moItemLayerWindow* pLayerCtrl = FindObjectByMob( p_ValueDesc.GetParamDescriptor().GetMobDescriptor() ); if (pLayerCtrl) { moMobDescriptor p_MobDesc = pLayerCtrl->Get(); return pLayerCtrl->ValueUpdated( p_ValueDesc ); } else if ( p_ValueDesc.GetParamDescriptor().GetMobDescriptor().GetMobDefinition().GetType() == MO_OBJECT_IODEVICE || p_ValueDesc.GetParamDescriptor().GetMobDescriptor().GetMobDefinition().GetType() == MO_OBJECT_RESOURCE || p_ValueDesc.GetParamDescriptor().GetMobDescriptor().GetMobDefinition().GetType() == MO_OBJECT_MASTEREFFECT) { //skip... } else { LogError( moText("No layer object control founded!! ::") + (moText)p_ValueDesc.GetParamDescriptor().GetMobDescriptor().GetMobDefinition().GetLabelName() ); return MO_DIRECTOR_STATUS_ERROR; } return MO_DIRECTOR_STATUS_OK; }
moDirectorStatus moLayerEffectCtrl::ValueUpdated( moValueDescriptor p_ValueDesc ) { float r,g,b,a; float ang = 0;///EffectState.tempo.ang moText tname; moTextureDescriptor pTextureDescriptor; ///actualizamos el valor correspondiente al color y a la textura ///ATENCION ESTO NO FUNCIONA SI HAY MAS DE UN COLOR O TEXTURA!!!! ///que textura o que color son los supervisados por este control se debería definir ///en algun lado ( acive=1 o principal=1 o algo por el estilo... o simplemente que sea el primero... ) ///bueno, y que definitivamente se llame COLOR y el otro se llame TEXTURE...??? switch( p_ValueDesc.GetParamDescriptor().GetParamDefinition().GetType() ) { case MO_PARAM_COLOR: if ( p_ValueDesc.GetParamDescriptor().GetParamDefinition().GetName()==moText("color") ) { r = 255.0 * p_ValueDesc.GetValue().GetSubValue(MO_RED).Eval( ang ); g = 255.0 * p_ValueDesc.GetValue().GetSubValue(MO_GREEN).Eval( ang ); b = 255.0 * p_ValueDesc.GetValue().GetSubValue(MO_BLUE).Eval( ang ); a = 255.0 * p_ValueDesc.GetValue().GetSubValue(MO_ALPHA).Eval( ang ); if (ColourPanelFinal) ColourPanelFinal->SetColourValue( wxColour( r,g, b, a ) ); } break; case MO_PARAM_TEXTURE: if ( p_ValueDesc.GetParamDescriptor().GetParamDefinition().GetName()==moText("texture") ) { tname = p_ValueDesc.GetValue().GetSubValue(0).Text(); pTextureDescriptor = GetResourceDescriptor( moTextureDescriptor( tname ) ); ///en caso de no tener aun textura asignada, o en caso de ser distinta... aplicamos... if ( !m_TextureDescriptor.IsValid() || (moText)m_TextureDescriptor.GetResourceDefinition().GetName() != (moText)pTextureDescriptor.GetResourceDefinition().GetName() ) { ///guardamos el descriptor de esta textura... para proximas referencias... ///para no volver a pisar... m_TextureDescriptor = pTextureDescriptor; m_TexValueDescriptor = p_ValueDesc; void* ptr = p_ValueDesc.GetValue().GetSubValue(0).Pointer(); moTexture *pTex = reinterpret_cast<moTexture*>( ptr ); if (pTex ) { //Log( pTex->GetName() ); MOuchar *bits; bits = new MOuchar[ pTex->GetWidth() * pTex->GetHeight() * 4 ]; pTex->GetBuffer( bits ); wxImage* thumbImg = new wxImage( pTex->GetWidth(), pTex->GetHeight(), false ); if (thumbImg) { thumbImg->InitAlpha(); for(int j=0; j< thumbImg->GetHeight(); j++) { for(int i=0; i< thumbImg->GetWidth(); i++) { thumbImg->SetRGB( i, j, bits[ (i + j*thumbImg->GetWidth() )*4 ], bits[ (i + j*thumbImg->GetWidth() )*4 + 1 ], bits[ (i + j*thumbImg->GetWidth() )*4 + 2 ] ); thumbImg->SetAlpha( i, j, bits[ (i + j*thumbImg->GetWidth() )*4 + 3 ] ); } } if (thumbImg->IsOk()) { ColourPanelFinal->SetBitmap( wxBitmap(*thumbImg) ); } if (thumbImg) delete thumbImg; ///el primero que encontramos que pudimos aplicar es suficiente..... break; } if (bits) delete [] bits; } } } break; default: ///nothing to do break; } return MO_DIRECTOR_STATUS_OK; }