Example #1
0
    /// <summary>
    /// 通过图片设置数据
    /// </summary>
    /// <param name="texture">Texture.</param>
    /// <param name="penTexture">Pen texture.</param>
    /// <param name="brushScale">Brush scale.</param>
    /// <param name="minAlpha">0-255.</param>
    public void SetDataByTexture(Texture2D texture, Texture penTexture, float brushScale, byte minAlpha = 10)
    {
        int gx = (int)(penTexture.width * brushScale / 4);
        int gy = (int)(penTexture.height * brushScale / 4);

        checkData             = ScriptableObject.CreateInstance <ScribbleCheckData>();
        checkData.checkPoints = new List <Vector2>();
        checkData.gridSize    = new Vector2(gx, gy);

        byte[] bytes = texture.GetRawTextureData();
        int    len = bytes.Length;
        int    row = 0, col = 0;
        int    pixelCount = 0;

        for (int i = 0; i < len; i += 4)
        {
            byte a = bytes[i + 3];

            if (a > minAlpha && col % gx == 0 && row % gy == 0)
            {
                checkData.checkPoints.Add(new Vector2(col - texture.width / 2, row - texture.height / 2) * 0.01f);
            }

            ++col;
            ++pixelCount;
            if (pixelCount >= texture.width)
            {
                pixelCount = 0;
                ++row;
                col = 0;
            }
        }
        Reset();
    }
Example #2
0
    void SaveDataToFile()
    {
        //序列化存储
        PaintCompleteChecker checker = target as PaintCompleteChecker;

        if (checker.gridsDic != null)
        {
            if (checker.checkData == null)
            {
                AssetDatabase.CreateAsset(GetGridData(), "Assets/" + checker.name + "_ScribbleCheckData.asset");
            }
            else
            {
                AssetDatabase.Refresh();
                ScribbleCheckData checkData = checker.checkData;
                checkData.checkPoints = new List <Vector2>();
                checkData.gridSize    = GetGridSize();
                foreach (string key in checker.gridsDic.Keys)
                {
                    if (checker.enablesDic[key])
                    {
                        Rect r = checker.gridsDic[key];
                        checkData.checkPoints.Add(r.center);
                    }
                }
                EditorUtility.SetDirty(checker.checkData);
                AssetDatabase.SaveAssets();
            }
        }
    }
Example #3
0
    ScribbleCheckData GetGridData()
    {
        PaintCompleteChecker checker   = target as PaintCompleteChecker;
        ScribbleCheckData    checkData = ScriptableObject.CreateInstance <ScribbleCheckData>();

        checkData.checkPoints = new List <Vector2>();
        checkData.gridSize    = GetGridSize();
        foreach (string key in checker.gridsDic.Keys)
        {
            if (checker.enablesDic[key])
            {
                Rect r = checker.gridsDic[key];
                checkData.checkPoints.Add(r.center);
            }
        }
        return(checkData);
    }