/// <summary>
    /// Moves selected asset in horizontal and vertical directions.
    /// </summary>
    /// <param name="modifyFlag">Modification flag. Vertical or Horizontal</param>
    /// <param name="isPositiveRate">True: Increment on move value. False: Decrement on move value.</param>
    public void MoveAsset(AssetModifyFlag modifyFlag, bool isPositiveRate)
    {
        Transform currentObject = m_transforms[AvatarCreatorContext.selectedAssetType];

        float maxVertical   = 9f;
        float maxHorizontal = 5f;

        float   moveOffset = 0.2f;
        Vector3 tempPos    = currentObject.localPosition;

        if (modifyFlag == AssetModifyFlag.MoveVertical)
        {
            if (isPositiveRate)
            {
                if (tempPos.y < maxVertical)
                {
                    tempPos.y += moveOffset;
                }
            }
            else
            {
                if (tempPos.y > -maxVertical)
                {
                    tempPos.y -= moveOffset;
                }
            }
        }
        else
        {
            if (isPositiveRate)
            {
                if (tempPos.x < maxHorizontal)
                {
                    tempPos.x += moveOffset;
                }
            }
            else
            {
                if (tempPos.x > -maxHorizontal)
                {
                    tempPos.x -= moveOffset;
                }
            }
        }

        currentObject.localPosition = tempPos;

        if (AvatarCreatorContext.selectedAssetType == AssetType.Hair)
        {
            currentObject.parent.Find("fo_hair_back").localPosition = tempPos;
        }
        else if (AvatarCreatorContext.selectedAssetType == AssetType.Ghutra)
        {
            currentObject.parent.Find("fo_ghutra_back").localPosition = tempPos;
        }
    }
    public CBaseAsset(AssetGender gender, AssetType assetType, AssetModifyFlag modifyFlags, string assetPath, bool loadSpriteOverride = false)
    {
        m_assetGender = gender;
        m_assetType   = assetType;
        m_modifyFlags = modifyFlags;

        LoadSprite(assetPath, loadSpriteOverride);

        Debug.Log("CBaseAsset: " + m_assetType + " " + m_assetGender + " " + m_modifyFlags);
    }
    /// <summary>
    /// Resizes or streches selected currently selected asset.
    /// </summary>
    /// <param name="modifyFlag">Modification flag. Resize, StrechHorizontal or StrechVertical.</param>
    /// <param name="isPositiveRate">Ture: Increment on resize/strech. False: Decrement on resize/strech.</param>
    public void ResizeAsset(AssetModifyFlag modifyFlag, bool isPositiveRate)
    {
        Transform currentObject = m_transforms[AvatarCreatorContext.selectedAssetType];

        // Predefined values.
        Vector3 maxScale     = new Vector3(1.2f, 1.2f, 0);
        Vector3 minScale     = new Vector3(0.8f, 0.8f, 0);
        float   resizeOffset = 0.02f;

        if (modifyFlag == AssetModifyFlag.Resize)
        {
            if (isPositiveRate)
            {
                if (currentObject.localScale.x < maxScale.x && currentObject.localScale.y < maxScale.y)
                {
                    currentObject.localScale = new Vector3(currentObject.localScale.x + resizeOffset, currentObject.localScale.y + resizeOffset, 0);
                }
            }
            else
            {
                if (currentObject.localScale.x > minScale.x && currentObject.localScale.y > minScale.y)
                {
                    currentObject.localScale = new Vector3(currentObject.localScale.x - resizeOffset, currentObject.localScale.y - resizeOffset, 0);
                }
            }
        }
        else if (modifyFlag == AssetModifyFlag.StretchHorizontal)
        {
            if (isPositiveRate)
            {
                if (currentObject.localScale.x < maxScale.x)
                {
                    currentObject.localScale = new Vector3(currentObject.localScale.x + resizeOffset, currentObject.localScale.y, 0);
                }
            }
            else
            {
                if (currentObject.localScale.x > minScale.x)
                {
                    currentObject.localScale = new Vector3(currentObject.localScale.x - resizeOffset, currentObject.localScale.y, 0);
                }
            }
        }
        else if (modifyFlag == AssetModifyFlag.StretchVertical)
        {
            if (isPositiveRate)
            {
                if (currentObject.localScale.y < maxScale.y)
                {
                    currentObject.localScale = new Vector3(currentObject.localScale.x, currentObject.localScale.y + resizeOffset, 0);
                }
            }
            else
            {
                if (currentObject.localScale.y > minScale.y)
                {
                    currentObject.localScale = new Vector3(currentObject.localScale.x, currentObject.localScale.y - resizeOffset, 0);
                }
            }
        }
    }