void TileSocialProfile::FBApiPhoto(const CCURLRequest::RequestState state, const char *url, const char *photoID, const char *file)
{
    if( strcmp( photoID, userID.buffer ) == 0 )
    {
        profilePhotoRequestedPriority = -2;
        if( state >= CCURLRequest::succeeded )
        {
            if( CCFileManager::doesCachedFileExist( file ) )
            {
                //DEBUGLOG( "TileSocialProfile::FBApiPhoto( %s ) \n", userName.buffer );
                setBaseTexture( file, Resource_Cached );
            }
        }
        else
        {
            colourInterpolator.setTargetColour( 0.25f );
        }
    }
    else
    {
        // Other photos
        if( state == CCURLRequest::succeeded )
        {
            DEBUGLOG( "Recieved Facebook photo: %s \n", file );
        }
        else if( state == CCURLRequest::cached )
        {
            //DEBUGLOG( "Cached Facebook photo: %s \n", file );
        }
    }
}
//------------------------------------------------------------------------------------------------------
bool CvTerrainPlaneInfo::read(CvXMLLoadUtility* pXML)
{
    CvString  szTextVal;
    if (!CvInfoBase::read(pXML))
        return false;

    pXML->GetChildXmlValByName( &m_bVisible, "bVisible");
    pXML->GetChildXmlValByName( &m_bGroundPlane, "bGroundPlane");
    pXML->GetChildXmlValByName( &m_fMaterialAlpha, "MaterialAlpha");
    pXML->GetChildXmlValByName( &m_fCloseAlpha, "CloseAlpha");

    pXML->GetChildXmlValByName( szTextVal, "TextureFile");
    setBaseTexture(szTextVal);

    pXML->GetChildXmlValByName( &m_BaseTextureScaleU, "TextureScalingU");
    pXML->GetChildXmlValByName( &m_BaseTextureScaleV, "TextureScalingV");
    pXML->GetChildXmlValByName( &m_fURate, "URate");
    pXML->GetChildXmlValByName( &m_fVRate, "VRate");
    pXML->GetChildXmlValByName( &m_fZHeight, "ZHeight");

    pXML->GetChildXmlValByName( szTextVal, "FogType");
    if(szTextVal.CompareNoCase("FOG_TYPE_NONE") == 0)
        m_eFogType = FOG_TYPE_NONE;
    else if(szTextVal.CompareNoCase("FOG_TYPE_PARALLEL") == 0)
        m_eFogType = FOG_TYPE_PARALLEL;
    else if(szTextVal.CompareNoCase("FOG_TYPE_PROJECTED") == 0)
        m_eFogType = FOG_TYPE_PROJECTED;
    else
    {
        FAssertMsg(false, "[Jason] Unknown fog type.");
        m_eFogType = FOG_TYPE_NONE;
    }

    return true;
}
void TileSocialPhoto::FBApiPhoto(const CCURLRequest::RequestState state, const char *url, const char *photoID, const char *filename)
{
    if( state >= CCURLRequest::succeeded )
    {
        if( CCText::Equals( photoRequested, url ) )
        {
            photoRequested = NULL;
        
            ASSERT( CCFileManager::doesCachedFileExist( filename ) );
            setBaseTexture( filename, Resource_Cached );

            const int textureHandleIndex = baseSquare->textureInfo->primaryIndex;
            CCTextureHandle *textureHandle = gEngine->textureManager->getTextureHandle( textureHandleIndex );
            if( textureHandle->texture != NULL )
            {
                adjustBaseSize();
            }
            else
            {
                LAMBDA_CONNECT( textureHandle->onLoad, TileSocialPhoto, this, adjustBaseSize() );
            }

            colourInterpolator.setTargetColour( 1.0f );
            
            if( rotation.y == 90.0f )
            {
                rotationInterpolator.pushV3( &rotation, CCVector3() );
            }
        }
    }
    else
    {
        colourInterpolator.setTargetColour( 0.0f );
    }
}
CCTile3DButton::CCTile3DButton(CCSceneBase *scene, const float width, const char *textureName)
{
    construct( scene );
    
    const CCTextureBase *texture = gEngine->textureManager->getTexture( textureName, Resource_Packaged );
    const float aspectRatio = texture->getImageWidth() / texture->getImageHeight();
    const float height = width / aspectRatio;
    setupBase( width, height );

    setBaseTexture( textureName, Resource_Packaged );
}
//------------------------------------------------------------------------------------------------------
bool CvCameraOverlayInfo::read(CvXMLLoadUtility* pXML)
{
    CvString  szTextVal;
    if (!CvInfoBase::read(pXML))
        return false;

    pXML->GetChildXmlValByName( &m_bVisible, "bVisible");

    pXML->GetChildXmlValByName( szTextVal, "TextureFile");
    setBaseTexture(szTextVal);

    pXML->GetChildXmlValByName( szTextVal, "CameraOverlayType");
    if(szTextVal.CompareNoCase("CAMERA_OVERLAY_DECAL") == 0)
        m_eCameraOverlayType = CAMERA_OVERLAY_DECAL;
    else if(szTextVal.CompareNoCase("CAMERA_OVERLAY_ADDITIVE") == 0)
        m_eCameraOverlayType = CAMERA_OVERLAY_ADDITIVE;
    else
    {
        FAssertMsg(false, "[Jason] Unknown camera overlay type.");
        m_eCameraOverlayType = CAMERA_OVERLAY_DECAL;
    }

    return true;
}
//------------------------------------------------------------------------------------------------------
bool CvWaterPlaneInfo::read(CvXMLLoadUtility* pXML)
{
    CvString  szTextVal;
    if (!CvInfoBase::read(pXML))
        return false;

    //int j;
    if (gDLL->getXMLIFace()->SetToChildByTagName(pXML->GetXML(),"WaterMaterial"))
    {
        if (gDLL->getXMLIFace()->SetToChildByTagName(pXML->GetXML(),"MaterialColors"))
        {
            if (gDLL->getXMLIFace()->SetToChildByTagName(pXML->GetXML(),"DiffuseMaterialColor"))
            {
                pXML->GetChildXmlValByName( &m_kMaterialDiffuse.r, "r");
                pXML->GetChildXmlValByName( &m_kMaterialDiffuse.g, "g");
                pXML->GetChildXmlValByName( &m_kMaterialDiffuse.b, "b");
                gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
            }
            if (gDLL->getXMLIFace()->SetToChildByTagName(pXML->GetXML(),"SpecularMaterialColor"))
            {
                pXML->GetChildXmlValByName( &m_kMaterialSpecular.r, "r");
                pXML->GetChildXmlValByName( &m_kMaterialSpecular.g, "g");
                pXML->GetChildXmlValByName( &m_kMaterialSpecular.b, "b");
                gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
            }
            if (gDLL->getXMLIFace()->SetToChildByTagName(pXML->GetXML(),"EmmisiveMaterialColor"))
            {
                pXML->GetChildXmlValByName( &m_kMaterialEmmisive.r, "r");
                pXML->GetChildXmlValByName( &m_kMaterialEmmisive.g, "g");
                pXML->GetChildXmlValByName( &m_kMaterialEmmisive.b, "b");
                gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
            }
            gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
        }

        pXML->GetChildXmlValByName( &m_fMaterialAlpha, "MaterialAlpha");

        gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
    }

    if (gDLL->getXMLIFace()->SetToChildByTagName(pXML->GetXML(),"WaterTextures"))
    {
        if (gDLL->getXMLIFace()->SetToChildByTagName(pXML->GetXML(),"WaterBaseTexture"))
        {
            pXML->GetChildXmlValByName( szTextVal, "TextureFile");
            setBaseTexture(szTextVal);

            pXML->GetChildXmlValByName( &m_BaseTextureScale, "TextureScaling");
            pXML->GetChildXmlValByName( &m_fURate, "URate");
            pXML->GetChildXmlValByName( &m_fVRate, "VRate");

            gDLL->getXMLIFace()->SetToParent(pXML->GetXML());

        }
        if (gDLL->getXMLIFace()->SetToChildByTagName(pXML->GetXML(),"WaterTransitionTexture"))
        {
            pXML->GetChildXmlValByName( szTextVal, "TextureFile");
            setTransitionTexture(szTextVal);
        }

        gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
    }

    gDLL->getXMLIFace()->SetToParent(pXML->GetXML());
    return true;
}