Exemplo n.º 1
0
    protected virtual void HandleUV()
    {
        if (spriteContainer != null && spriteContainer.isReady)
        {
            OTContainer.Frame frame = spriteContainer.GetFrame(frameIndex);
            // adjust this sprites UV coords
            if (frame.uv != null && mesh != null)
            {
                Vector2[] meshUV = frame.uv.Clone() as Vector2[];
                if (meshUV.Length == mesh.vertexCount)
                {
                    if (flipHorizontal)
                    {
                        Vector2 v;
                        v         = meshUV[0];
                        meshUV[0] = meshUV[1]; meshUV[1] = v;
                        v         = meshUV[2];
                        meshUV[2] = meshUV[3]; meshUV[3] = v;
                    }

                    if (flipVertical)
                    {
                        Vector2 v;
                        v         = meshUV[0];
                        meshUV[0] = meshUV[3]; meshUV[3] = v;
                        v         = meshUV[1];
                        meshUV[1] = meshUV[2]; meshUV[2] = v;
                    }
                    mesh.uv = meshUV;
                }
            }
        }
    }
Exemplo n.º 2
0
    /// <exclude/>
    protected override void HandleUV()
    {
        if (spriteContainer != null && spriteContainer.isReady)
        {
            OTContainer.Frame frame = spriteContainer.GetFrame(frameIndex);
            // adjust this sprites UV coords
            if (frame.uv != null && mesh != null)
            {
                int count = _gradientColors.Length;
                for (int vr = 0; vr < _gradientColors.Length; vr++)
                {
                    if (_gradientColors[vr].size > 0)
                    {
                        count++;
                    }
                }

                // get positions for UV splicing
                float[] gradientPositions = new float[count];
                int     vp = 0;
                for (int g = 0; g < gradientColors.Length; g++)
                {
                    gradientPositions[vp] = gradientColors[g].position;
                    vp++;
                    if (gradientColors[g].size > 0)
                    {
                        gradientPositions[vp] = gradientColors[g].position + gradientColors[g].size;
                        vp++;
                    }
                }
                // splice UV that we got from the container.
                mesh.uv = SpliceUV(frame.uv.Clone() as Vector2[], gradientPositions, gradientOrientation == GradientOrientation.Horizontal);
            }
        }
    }
Exemplo n.º 3
0
    void HandleUV(Material mat)
    {
        if (useUV && spriteContainer != null && spriteContainer.isReady)
        {
            OTContainer.Frame frame = spriteContainer.GetFrame(frameIndex);
            mat.mainTextureScale  = new Vector2(1, 1);
            mat.mainTextureOffset = new Vector2(0, 0);
            // adjust this sprites UV coords
            if (frame.uv != null && mesh != null)
            {
                Vector2[] meshUV = frame.uv.Clone() as Vector2[];
                if (flipHorizontal)
                {
                    Vector2 v;
                    v         = meshUV[0];
                    meshUV[0] = meshUV[1]; meshUV[1] = v;
                    v         = meshUV[2];
                    meshUV[2] = meshUV[3]; meshUV[3] = v;
                }

                if (flipVertical)
                {
                    Vector2 v;
                    v         = meshUV[0];
                    meshUV[0] = meshUV[3]; meshUV[3] = v;
                    v         = meshUV[1];
                    meshUV[1] = meshUV[2]; meshUV[2] = v;
                }

                mesh.uv = meshUV;
            }
        }
    }
Exemplo n.º 4
0
 protected override void HandleUV()
 {
     if (spriteContainer != null && spriteContainer.isReady)
     {
         OTContainer.Frame frame = spriteContainer.GetFrame(frameIndex);
         // adjust this sprites UV coords
         if (frame.uv != null && mesh != null)
         {
             // splice UV that we got from the container.
             mesh.uv = frame.uv;
         }
     }
 }
Exemplo n.º 5
0
 void ResizeFrame()
 {
     OTContainer.Frame fr = CurrentFrame();
     oSize = fr.size;
     if (!baseSize.Equals(Vector2.zero))
     {
         size = new Vector2(size.x * (fr.size.x / baseSize.x), size.y * (fr.size.y / baseSize.y)) * OT.view.sizeFactor;
     }
     else
     {
         size = fr.size * OT.view.sizeFactor;
     }
     baseSize = fr.size;
 }
Exemplo n.º 6
0
    void FrameOffsetSize(OTContainer.Frame fr)
    {
        float   _sx = (size.x / oSize.x);
        float   _sy = (size.y / oSize.y);
        Vector2 sc  = new Vector2(_sx * fr.size.x * OT.view.sizeFactor, _sy * fr.size.y * OT.view.sizeFactor);
        Vector3 sc3 = new Vector3(sc.x, sc.y, 1);

        _size = sc;
        if (!Vector3.Equals(otTransform.localScale, sc3))
        {
            otTransform.localScale = sc3;
        }
        oSize = fr.size * OT.view.sizeFactor;
        FrameOffset(fr);
    }
Exemplo n.º 7
0
    void ResizeFrame()
    {
        OTContainer.Frame fr = CurrentFrame();

        if (!baseSize.Equals(Vector2.zero))
        {
            size = new Vector2(size.x * (fr.size.x / baseSize.x), size.y * (fr.size.y / baseSize.y));
        }
        else
        {
            size = fr.size * OT.view.sizeFactor;
        }

        // base size always contains frame size
        baseSize = fr.size;
        // oSize is real sprite size
        oSize = baseSize * OT.view.sizeFactor;
    }
Exemplo n.º 8
0
    protected Vector2[] GetUV()
    {
        Vector2[] meshUV = new Vector2[] {
            new Vector2(0, 1), new Vector2(1, 1),
            new Vector2(1, 0), new Vector2(0, 0)
        };

        if (mesh == null)
        {
            return new Vector2[] {}
        }
        ;


        if (spriteContainer != null && spriteContainer.isReady)
        {
            OTContainer.Frame frame = spriteContainer.GetFrame(frameIndex);

            // adjust this sprites UV coords
            if (frame.uv != null && mesh != null)
            {
                meshUV = frame.uv.Clone() as Vector2[];
            }
        }

        if (flipHorizontal)
        {
            Vector2 v;
            v         = meshUV[0];
            meshUV[0] = meshUV[1]; meshUV[1] = v;
            v         = meshUV[2];
            meshUV[2] = meshUV[3]; meshUV[3] = v;
        }

        if (flipVertical)
        {
            Vector2 v;
            v         = meshUV[0];
            meshUV[0] = meshUV[3]; meshUV[3] = v;
            v         = meshUV[1];
            meshUV[1] = meshUV[2]; meshUV[2] = v;
        }
        return(meshUV);
    }
Exemplo n.º 9
0
    void FrameOffset(OTContainer.Frame fr)
    {
        float _sx = (size.x / oSize.x);
        float _sy = (size.y / oSize.y);

        imageSize = new Vector2(_sx * fr.imageSize.x * OT.view.sizeFactor, _sy * fr.imageSize.y * OT.view.sizeFactor);
        Vector2 nOffset = new Vector2(_sx * fr.offset.x * OT.view.sizeFactor, _sy * fr.offset.y * OT.view.sizeFactor);

        if (flipHorizontal)
        {
            nOffset.x = (((fr.imageSize.x * OT.view.sizeFactor) - oSize.x) * _sx) - nOffset.x;
        }
        if (flipVertical)
        {
            nOffset.y = (((fr.imageSize.y * OT.view.sizeFactor) - oSize.y) * _sy) - nOffset.y;
        }

        offset   = nOffset;
        position = _position;
    }
Exemplo n.º 10
0
    override protected void CheckSettings()
    {
        base.CheckSettings();
        if (Application.isEditor || OT.dirtyChecks || dirtyChecks)
        {
            if (spriteContainer != null && spriteContainer.isReady && !(this is OTTextSprite))
            {
                if (spriteContainer is OTSpriteAtlasImport && (spriteContainer as OTSpriteAtlasImport).reloadFrame && !frameReloaded)
                {
                    _frameIndex_  = -1;
                    frameReloaded = true;
                }

                if (frameIndex == _frameIndex_)
                {
                    CheckFrameName();
                }

                if (frameIndex < 0)
                {
                    _frameIndex = 0;
                }
                if (frameIndex > spriteContainer.frameCount - 1)
                {
                    _frameIndex = spriteContainer.frameCount - 1;
                }

                OTContainer.Frame fr = CurrentFrame();

                if (baseSize.Equals(Vector2.zero) || _newSprite)
                {
                    if (!_newSprite && !oSize.Equals(Vector2.zero))
                    {
                        baseSize = oSize / OT.view.sizeFactor;
                    }
                    else
                    {
                        if (_newSprite)
                        {
                            baseSize = size;
                        }
                        else
                        {
                            baseSize = fr.size;
                        }
                    }
                    _newSprite = false;
                }

                if (_spriteContainer_ == null && _containerName != "")
                {
                    // set basesize to current frame size if we just had a lookup from a prefab
                    baseSize        = fr.size;
                    adjustFrameSize = false;
                    oSize           = baseSize * OT.view.sizeFactor;
                }
                _containerName = spriteContainer.name;

                if (_spriteContainer_ != spriteContainer && adjustFrameSize)
                {
                    ResizeFrame();
                }
                baseSize = fr.size;
            }
            else
            {
                if (_spriteContainer_ != null && _spriteContainer == null)
                {
                    _containerName = "";
                }
                else
                if (_spriteContainer != null)
                {
                    _containerName = spriteContainer.name;
                }

                if (_image_ != image && _image != null)
                {
                    if (!baseSize.Equals(Vector2.zero))
                    {
                        size = new Vector2(size.x * ((image.width * (1 / OT.sizeFactor)) / baseSize.x), size.y * ((image.height * (1 / OT.sizeFactor)) / baseSize.y));
                    }
                    else
                    {
                        size = new Vector2(image.width * (1 / OT.sizeFactor), image.height * (1 / OT.sizeFactor)) * OT.view.sizeFactor;
                    }
                    baseSize = new Vector2(image.width * (1 / OT.sizeFactor), image.height * (1 / OT.sizeFactor));
                }
            }
            if (alpha < 0)
            {
                _alpha = 0;
            }
            else
            if (alpha > 1)
            {
                _alpha = 1;
            }
        }
    }
Exemplo n.º 11
0
    void ParseText()
    {
        _bytesLines = GetBytes();
        char[] chars = text.ToCharArray();
        if (textFile != null)
        {
            chars = textFile.text.ToCharArray();
        }

        for (int p = 0; p < _parsed.Count; p++)
        {
            _parsed[p].Clean();
        }
        _parsed.Clear();


        int           dy        = System.Convert.ToUInt16(GetDY());
        int           yPosition = 0;
        OTSpriteAtlas atlas     = (spriteContainer as OTSpriteAtlas);


        OTAtlasData data = atlas.atlasData[0];

        if (data != null && data.frameSize.y > 0 && lineHeight == 0)
        {
            lineHeight = (int)data.frameSize.y;
        }


        sizeChars = new int[] {};
        System.Array.Resize <int>(ref sizeChars, chars.Length);
        int ci = 0;

        OTTextAlinea alinea = new OTTextAlinea(yPosition, lineHeight);

        foreach (char c in chars)
        {
            if (c == '\r')
            {
                sizeChars[ci++] = 0;
                continue;
            }
            if (c == '\n')
            {
                alinea.End();
                _parsed.Add(alinea);
                yPosition      -= dy;
                alinea          = new OTTextAlinea(yPosition, lineHeight);
                sizeChars[ci++] = 0;
                continue;
            }
            data = atlas.DataByName("" + c);
            OTContainer.Frame frame = atlas.FrameByName("" + c);

            if (data == null || frame.name == "")
            {
                string charName = ((int)c).ToString();
                data  = atlas.DataByName(charName);
                frame = atlas.FrameByName(charName);
            }

            if (data == null || frame.name == "")
            {
                data  = atlas.DataByName("" + c + ".png");
                frame = atlas.FrameByName("" + c + ".png");
            }

            if (data == null || frame.name == "")
            {
                byte b = System.Text.Encoding.ASCII.GetBytes("?")[0];
                data  = atlas.DataByName("" + b);
                frame = atlas.FrameByName("" + b);
            }

            if (data == null || frame.name == "")
            {
                data  = atlas.DataByName("32");
                frame = atlas.FrameByName("32");
            }

            if (data != null && data.frameSize.y > 0 && lineHeight == 0)
            {
                lineHeight = (int)data.frameSize.y;
            }

            if (data != null && frame.name == data.name)
            {
                if (data.name != "32")
                {
                    Vector3[] verts = new Vector3[] {
                        new Vector3(frame.offset.x, -frame.offset.y, 0),
                        new Vector3(frame.offset.x + frame.size.x, -frame.offset.y, 0),
                        new Vector3(frame.offset.x + frame.size.x, -frame.offset.y - frame.size.y, 0),
                        new Vector3(frame.offset.x, -frame.offset.y - frame.size.y, 0)
                    };
                    alinea.Add(((char)c).ToString(), data, verts, frame.uv);
                }
                else
                {
                    alinea.NextWord(data);
                }


                string dx    = data.GetMeta("dx");
                int    width = 0;
                if (dx == "")
                {
                    width = (int)(data.offset.x + data.size.x);
                }
                else
                {
                    width = System.Convert.ToUInt16(dx);
                }

                if (width == 0)
                {
                    width = 30;
                }
                sizeChars[ci++] = width;
            }
        }
        alinea.End();
        _parsed.Add(alinea);

        if (wordWrap > 0)
        {
            for (int p = 0; p < _parsed.Count; p++)
            {
                _parsed[p].WordWrap(wordWrap, dy);
                for (int pp = p + 1; pp < _parsed.Count; pp++)
                {
                    _parsed[pp].lines[0].yPosition -= (dy * (_parsed[p].lines.Count - 1));
                }
            }
        }
    }
Exemplo n.º 12
0
    protected override void Clean()
    {
        if (!OT.isValid || mesh == null)
        {
            return;
        }
        base.Clean();

        if (Application.isPlaying && _image != null && _spriteContainer == null)
        {
            if (_defaultImage == null)
            {
                _defaultImage = _image;
            }

            if (OT.textureResourceFolder != "")
            {
                Texture2D tex = OTHelper.ResourceTexture(OT.textureResourceFolder + '/' + _defaultImage.name);
                if (tex != null)
                {
                    _image = tex;
                }
            }
            else
            {
                if (OT.sizeFactor != 1)
                {
                    for (int i = 0; i < sizeImages.Length; i++)
                    {
                        if (sizeImages[i].sizeFactor == OT.sizeFactor)
                        {
                            _image = sizeImages[i].texture;
                        }
                    }
                }
                else
                {
                    if (_defaultImage != null)
                    {
                        _image = _defaultImage;
                    }
                }
            }
        }

        if (_spriteContainer_ != spriteContainer ||
            _frameIndex_ != frameIndex ||
            _frameName_ != frameName ||
            _image_ != image ||
            _tintColor_ != tintColor ||
            _alpha_ != alpha ||
            _materialReference_ != _materialReference ||
            isCopy)
        {
            if (spriteContainer != null && spriteContainer.isReady)
            {
                if (_frameName_ != frameName)
                {
                    _frameIndex = spriteContainer.GetFrameIndex(frameName);
                }

                if (frameIndex < 0)
                {
                    _frameIndex = 0;
                }
                if (frameIndex > spriteContainer.frameCount - 1)
                {
                    _frameIndex = spriteContainer.frameCount - 1;
                }

                // set frame name
                OTContainer.Frame fr = CurrentFrame();
                if (fr.name != "" && (frameName == "" || fr.name.IndexOf(frameName) != 0))
                {
                    _frameName = fr.name;
                }

                if (spriteContainer is OTSpriteAtlas)
                {
                    if (adjustFrameSize)
                    {
                        if ((spriteContainer as OTSpriteAtlas).offsetSizing)
                        {
                            if (Vector2.Equals(oSize, Vector2.zero))
                            {
                                oSize = fr.size * OT.view.sizeFactor;
                                Vector2 nOffset = fr.offset * OT.view.sizeFactor;

                                if (flipHorizontal)
                                {
                                    nOffset.x = (fr.imageSize.x * OT.view.sizeFactor) - oSize.x - nOffset.x;
                                }
                                if (flipVertical)
                                {
                                    nOffset.y = (fr.imageSize.y * OT.view.sizeFactor) - oSize.y - nOffset.y;
                                }

                                if (_baseOffset.x != nOffset.x || _baseOffset.y != nOffset.y)
                                {
                                    offset    = nOffset;
                                    position  = _position;
                                    imageSize = fr.imageSize * OT.view.sizeFactor;
                                }
                            }
                            if (_frameIndex_ != frameIndex || _spriteContainer_ != spriteContainer)
                            {
                                float   _sx = (size.x / oSize.x);
                                float   _sy = (size.y / oSize.y);
                                Vector2 sc  = new Vector2(_sx * fr.size.x * OT.view.sizeFactor, _sy * fr.size.y * OT.view.sizeFactor);
                                Vector3 sc3 = new Vector3(sc.x, sc.y, 1);

                                _size = sc;
                                if (!Vector3.Equals(otTransform.localScale, sc3))
                                {
                                    otTransform.localScale = sc3;
                                }
                                oSize = fr.size * OT.view.sizeFactor;

                                imageSize = new Vector2(_sx * fr.imageSize.x * OT.view.sizeFactor, _sy * fr.imageSize.y * OT.view.sizeFactor);
                                Vector2 nOffset = new Vector2(_sx * fr.offset.x * OT.view.sizeFactor, _sy * fr.offset.y * OT.view.sizeFactor);

                                if (flipHorizontal)
                                {
                                    nOffset.x = (((fr.imageSize.x * OT.view.sizeFactor) - oSize.x) * _sx) - nOffset.x;
                                }
                                if (flipVertical)
                                {
                                    nOffset.y = (((fr.imageSize.y * OT.view.sizeFactor) - oSize.y) * _sy) - nOffset.y;
                                }

                                offset   = nOffset;
                                position = _position;
                            }
                        }
                        else
                        {
                            Vector3[] verts = fr.vertices.Clone() as Vector3[];
                            verts[0]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                            verts[1]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                            verts[2]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                            verts[3]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                            mesh.vertices = verts;

                            _size = fr.size;
                            Vector3 sc3 = new Vector3(_size.x, _size.y, 1);
                            if (!Vector3.Equals(otTransform.localScale, sc3))
                            {
                                otTransform.localScale = sc3;
                            }
                        }
                    }
                }
            }

            // keep old and get new material name
            string cMatName = GetMatName();
            if (lastMatName != cMatName)
            {
                // material name has changed to look it up
                Material mat = OT.LookupMaterial(cMatName);
                // if we could not find the material let create a new one
                if (mat == null)
                {
                    mat = InitMaterial();
                }
                else
                {
                    // if we had a previous generated material lets
                    // decrease its use
                    if (lastMat != null && lastMatName != "")
                    {
                        OT.MatDec(lastMat, lastMatName);
                    }
                    otRenderer.material = mat;
                    HandleUV();
                    lastMat     = mat;
                    lastMatName = cMatName;
                }
                // increase the current material's use
                OT.MatInc(mat, cMatName);
            }
            else
            {
                if (_frameIndex_ != frameIndex)
                {
                    HandleUV();
                }
            }

            _spriteContainer_   = spriteContainer;
            _materialReference_ = materialReference;
            _frameIndex_        = frameIndex;
            _frameName_         = frameName;
            _image_             = image;

            if (tintColor != _tintColor_ || _alpha_ != alpha)
            {
                if (mr == null)
                {
                    mr = OT.GetMatRef(materialReference);
                }

                HandleColors();
                _tintColor_ = tintColor;
                _alpha_     = alpha;
            }

            Changed();
        }


        isDirty = false;
        if (spriteContainer != null && !spriteContainer.isReady)
        {
            isDirty = true;
        }

        CheckModifications();
    }
Exemplo n.º 13
0
    protected override void Clean()
    {
        if (!OT.isValid)
        {
            return;
        }
        base.Clean();

        if (_spriteContainer_ != spriteContainer ||
            _frameIndex_ != frameIndex ||
            _image_ != image ||
            _tintColor_ != tintColor ||
            _alpha_ != alpha ||
            _materialReference_ != _materialReference ||
            isCopy)
        {
            if (spriteContainer != null && spriteContainer.isReady)
            {
                if (frameIndex < 0)
                {
                    _frameIndex = 0;
                }
                if (frameIndex > spriteContainer.frameCount - 1)
                {
                    _frameIndex = spriteContainer.frameCount - 1;
                }
                if (spriteContainer is OTSpriteAtlas)
                {
                    OTContainer.Frame fr = CurrentFrame();
                    if ((spriteContainer as OTSpriteAtlas).offsetSizing)
                    {
                        if (Vector2.Equals(oSize, Vector2.zero))
                        {
                            oSize = fr.size * OT.view.sizeFactor;
                            Vector2 nOffset = fr.offset * OT.view.sizeFactor;
                            if (_baseOffset.x != nOffset.x || _baseOffset.y != nOffset.y)
                            {
                                offset    = nOffset;
                                position  = _position;
                                imageSize = fr.imageSize * OT.view.sizeFactor;
                            }
                        }
                        if (_frameIndex_ != frameIndex || _spriteContainer_ != spriteContainer)
                        {
                            Vector2 sc  = new Vector2((size.x / oSize.x) * fr.size.x * OT.view.sizeFactor, (size.y / oSize.y) * fr.size.y * OT.view.sizeFactor);
                            Vector3 sc3 = new Vector3(sc.x, sc.y, 1);

                            _size = sc;
                            if (!Vector3.Equals(transform.localScale, sc3))
                            {
                                transform.localScale = sc3;
                            }
                            oSize     = fr.size * OT.view.sizeFactor;
                            imageSize = fr.imageSize * OT.view.sizeFactor;
                            Vector2 nOffset = fr.offset * OT.view.sizeFactor;
                            if (_baseOffset.x != nOffset.x || _baseOffset.y != nOffset.y)
                            {
                                offset   = nOffset;
                                position = _position;
                            }
                        }
                    }
                    else
                    {
                        Vector3[] verts = fr.vertices.Clone() as Vector3[];
                        verts[0]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                        verts[1]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                        verts[2]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                        verts[3]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                        mesh.vertices = verts;

                        _size = fr.size;
                        Vector3 sc3 = new Vector3(_size.x, _size.y, 1);
                        if (!Vector3.Equals(transform.localScale, sc3))
                        {
                            transform.localScale = sc3;
                        }
                    }
                }
            }

            Material mat = LookupMaterial();
            if (mat == null)
            {
                mat = InitMaterial();
            }
            else
            {
                renderer.material = mat;
                HandleUV(mat);
            }
            OT.MatInc(mat);

            _spriteContainer_   = spriteContainer;
            _materialReference_ = materialReference;
            _frameIndex_        = frameIndex;
            _image_             = image;
            _tintColor_         = tintColor;
            _alpha_             = alpha;
        }

        isDirty = false;
        if (spriteContainer != null && !spriteContainer.isReady)
        {
            isDirty = true;
        }
    }
Exemplo n.º 14
0
    void ParseText()
    {
        _bytesLines = GetBytes();
        byte[] chars = System.Text.Encoding.ASCII.GetBytes(text);
        if (textFile != null)
        {
            chars = System.Text.Encoding.ASCII.GetBytes(textFile.text);
        }

        for (int p = 0; p < _parsed.Count; p++)
        {
            _parsed[p].Clean();
        }
        _parsed.Clear();

        int           dy        = System.Convert.ToUInt16(GetDY());
        int           yPosition = 0;
        OTSpriteAtlas atlas     = (spriteContainer as OTSpriteAtlas);
        OTTextAlinea  alinea    = new OTTextAlinea(yPosition);

        foreach (byte c in chars)
        {
            if (c == '\r')
            {
                continue;
            }
            if (c == '\n')
            {
                alinea.End();
                _parsed.Add(alinea);
                yPosition -= dy;
                alinea     = new OTTextAlinea(yPosition);
                continue;
            }
            OTAtlasData       data  = atlas.DataByName("" + c);
            OTContainer.Frame frame = atlas.FrameByName("" + c);
            if (data == null || frame.name == "")
            {
                data  = atlas.DataByName("" + c + ".png");
                frame = atlas.FrameByName("" + c + ".png");
            }

            if (data == null || frame.name == "")
            {
                char[] ch = System.Text.ASCIIEncoding.ASCII.GetChars(new byte[] { c });
                data  = atlas.DataByName(ch[0].ToString());
                frame = atlas.FrameByName(ch[0].ToString());
            }
            if (data == null || frame.name == "")
            {
                char[] ch = System.Text.ASCIIEncoding.ASCII.GetChars(new byte[] { c });
                data  = atlas.DataByName(ch[0].ToString() + ".png");
                frame = atlas.FrameByName(ch[0].ToString() + ".png");
            }

            if (data == null || frame.name == "")
            {
                byte b = System.Text.Encoding.ASCII.GetBytes("?")[0];
                data  = atlas.DataByName("" + b);
                frame = atlas.FrameByName("" + b);
            }

            if (data == null || frame.name == "")
            {
                data  = atlas.DataByName("32");
                frame = atlas.FrameByName("32");
            }

            if (data != null && frame.name == data.name)
            {
                if (data.name != "32")
                {
                    Vector3[] verts = new Vector3[] {
                        new Vector3(frame.offset.x, -frame.offset.y, 0),
                        new Vector3(frame.offset.x + frame.size.x, -frame.offset.y, 0),
                        new Vector3(frame.offset.x + frame.size.x, -frame.offset.y - frame.size.y, 0),
                        new Vector3(frame.offset.x, -frame.offset.y - frame.size.y, 0)
                    };
                    alinea.Add(((char)c).ToString(), data, verts, frame.uv);
                }
                else
                {
                    alinea.NextWord(data);
                }
            }
        }
        alinea.End();
        _parsed.Add(alinea);

        if (wordWrap > 0)
        {
            for (int p = 0; p < _parsed.Count; p++)
            {
                _parsed[p].WordWrap(wordWrap, dy);
                for (int pp = p + 1; pp < _parsed.Count; pp++)
                {
                    _parsed[pp].lines[0].yPosition -= (dy * (_parsed[p].lines.Count - 1));
                }
            }
        }
    }
Exemplo n.º 15
0
    /// <exclude />
    override protected void CheckSettings()
    {
        base.CheckSettings();
        if (Application.isEditor || OT.dirtyChecks || dirtyChecks)
        {
            if (spriteContainer != null && spriteContainer.isReady)
            {
                _containerName = spriteContainer.name;

                if (spriteContainer is OTSpriteAtlasImport && (spriteContainer as OTSpriteAtlasImport).reloadFrame && !frameReloaded)
                {
                    _frameIndex_  = -1;
                    frameReloaded = true;
                }

                if (frameIndex < 0)
                {
                    _frameIndex = 0;
                }
                if (frameIndex > spriteContainer.frameCount - 1)
                {
                    _frameIndex = spriteContainer.frameCount - 1;
                }

                OTContainer.Frame fr = CurrentFrame();
                if (_spriteContainer_ == null && _containerName != "")
                {
                    // set basesize to current frame size if we just had a lookup from a prefab
                    baseSize = fr.size;
                }
                if (_spriteContainer_ != spriteContainer)
                {
                    if (!baseSize.Equals(Vector2.zero))
                    {
                        size = new Vector2(size.x * (fr.size.x / baseSize.x), size.y * (fr.size.y / baseSize.y)) * OT.view.sizeFactor;
                    }
                    else
                    {
                        size = fr.size * OT.view.sizeFactor;
                    }
                }
                baseSize = fr.size;
            }
            else
            {
                if (_image_ != image)
                {
                    size = new Vector2(image.width, image.height) * OT.view.sizeFactor;
                }
            }
            if (alpha < 0)
            {
                _alpha = 0;
            }
            else
            if (alpha > 1)
            {
                _alpha = 1;
            }
        }
    }
Exemplo n.º 16
0
    void CleanFrame()
    {
        if (spriteContainer != null && spriteContainer.isReady)
        {
            if (_frameName_ != frameName)
            {
                _frameIndex = spriteContainer.GetFrameIndex(frameName);
            }

            if (frameIndex < 0)
            {
                _frameIndex = 0;
            }
            if (frameIndex > spriteContainer.frameCount - 1)
            {
                _frameIndex = spriteContainer.frameCount - 1;
            }

            // set frame name
            OTContainer.Frame fr = CurrentFrame();
            if (fr.name != "" && (frameName == "" || fr.name.IndexOf(frameName) != 0))
            {
                _frameName = fr.name;
            }

            if (spriteContainer is OTSpriteAtlas)
            {
                if (adjustFrameSize)
                {
                    if ((spriteContainer as OTSpriteAtlas).offsetSizing)
                    {
                        if (Vector2.Equals(oSize, Vector2.zero))
                        {
                            oSize = fr.size * OT.view.sizeFactor;
                            Vector2 nOffset = fr.offset * OT.view.sizeFactor;

                            if (flipHorizontal)
                            {
                                nOffset.x = (fr.imageSize.x * OT.view.sizeFactor) - oSize.x - nOffset.x;
                            }
                            if (flipVertical)
                            {
                                nOffset.y = (fr.imageSize.y * OT.view.sizeFactor) - oSize.y - nOffset.y;
                            }

                            if (_baseOffset.x != nOffset.x || _baseOffset.y != nOffset.y)
                            {
                                offset    = nOffset;
                                position  = _position;
                                imageSize = fr.imageSize * OT.view.sizeFactor;
                            }
                        }
                        if (_frameIndex_ != frameIndex || _spriteContainer_ != spriteContainer)
                        {
                            FrameOffsetSize(fr);
                        }
                    }
                    else
                    {
                        Vector3[] verts = fr.vertices.Clone() as Vector3[];
                        verts[0]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                        verts[1]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                        verts[2]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                        verts[3]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                        mesh.vertices = verts;

                        _size = fr.size;
                        Vector3 sc3 = new Vector3(_size.x, _size.y, 1);
                        if (!Vector3.Equals(otTransform.localScale, sc3))
                        {
                            otTransform.localScale = sc3;
                        }
                    }
                }
            }
        }
    }
Exemplo n.º 17
0
    protected override void Clean()
    {
        if (!OT.isValid || mesh == null)
        {
            return;
        }
        base.Clean();

        if (_spriteContainer_ != spriteContainer ||
            _frameIndex_ != frameIndex ||
            _frameName_ != frameName ||
            _image_ != image ||
            _tintColor_ != tintColor ||
            _alpha_ != alpha ||
            _materialReference_ != _materialReference ||
            isCopy)
        {
            if (spriteContainer != null && spriteContainer.isReady)
            {
                if (_frameName_ != frameName)
                {
                    _frameIndex = spriteContainer.GetFrameIndex(frameName);
                }

                if (frameIndex < 0)
                {
                    _frameIndex = 0;
                }
                if (frameIndex > spriteContainer.frameCount - 1)
                {
                    _frameIndex = spriteContainer.frameCount - 1;
                }

                // set frame name
                OTContainer.Frame fr = CurrentFrame();
                if (fr.name != "" && (frameName == "" || fr.name.IndexOf(frameName) != 0))
                {
                    _frameName = fr.name;
                }

                if (spriteContainer is OTSpriteAtlas)
                {
                    if (adjustFrameSize)
                    {
                        if ((spriteContainer as OTSpriteAtlas).offsetSizing)
                        {
                            if (Vector2.Equals(oSize, Vector2.zero))
                            {
                                oSize = fr.size * OT.view.sizeFactor;
                                Vector2 nOffset = fr.offset * OT.view.sizeFactor;
                                if (_baseOffset.x != nOffset.x || _baseOffset.y != nOffset.y)
                                {
                                    offset    = nOffset;
                                    position  = _position;
                                    imageSize = fr.imageSize * OT.view.sizeFactor;
                                }
                            }
                            if (_frameIndex_ != frameIndex || _spriteContainer_ != spriteContainer)
                            {
                                float   _sx = (size.x / oSize.x);
                                float   _sy = (size.y / oSize.y);
                                Vector2 sc  = new Vector2(_sx * fr.size.x * OT.view.sizeFactor, _sy * fr.size.y * OT.view.sizeFactor);
                                Vector3 sc3 = new Vector3(sc.x, sc.y, 1);

                                _size = sc;
                                if (!Vector3.Equals(transform.localScale, sc3))
                                {
                                    transform.localScale = sc3;
                                }
                                oSize = fr.size * OT.view.sizeFactor;

                                imageSize = new Vector2(_sx * fr.imageSize.x * OT.view.sizeFactor, _sy * fr.imageSize.y * OT.view.sizeFactor);
                                Vector2 nOffset = new Vector2(_sx * fr.offset.x * OT.view.sizeFactor, _sy * fr.offset.y * OT.view.sizeFactor);

                                offset   = nOffset;
                                position = _position;
                            }
                        }
                        else
                        {
                            Vector3[] verts = fr.vertices.Clone() as Vector3[];
                            verts[0]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                            verts[1]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                            verts[2]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                            verts[3]     -= new Vector3(pivotPoint.x, pivotPoint.y, 0);
                            mesh.vertices = verts;

                            _size = fr.size;
                            Vector3 sc3 = new Vector3(_size.x, _size.y, 1);
                            if (!Vector3.Equals(transform.localScale, sc3))
                            {
                                transform.localScale = sc3;
                            }
                        }
                    }
                }
            }

            // keep old and get new material name
            string cMatName = GetMatName();
            if (lastMatName != cMatName)
            {
                // material name has changed to look it up
                Material mat = OT.LookupMaterial(cMatName);
                // if we could not find the material let create a new one
                if (mat == null)
                {
                    mat = InitMaterial();
                }
                else
                {
                    // if we had a previous generated material lets
                    // decrease its use
                    if (lastMat != null && lastMatName != "")
                    {
                        OT.MatDec(lastMat, lastMatName);
                    }
                    renderer.material = mat;
                    HandleUV();
                    lastMat     = mat;
                    lastMatName = cMatName;
                }
                // increase the current material's use
                OT.MatInc(mat, cMatName);
            }
            else
            {
                if (_frameIndex_ != frameIndex)
                {
                    HandleUV();
                }
            }

            _spriteContainer_   = spriteContainer;
            _materialReference_ = materialReference;
            _frameIndex_        = frameIndex;
            _frameName_         = frameName;
            _image_             = image;
            _tintColor_         = tintColor;
            _alpha_             = alpha;
        }



        isDirty = false;
        if (spriteContainer != null && !spriteContainer.isReady)
        {
            isDirty = true;
        }

#if UNITY_EDITOR
        if (!Application.isPlaying)
        {
            UnityEditor.PrefabUtility.RecordPrefabInstancePropertyModifications(this);
        }
#endif
    }