Example #1
0
 void CheckResolutionData()
 {
     if (_defaultTexture == null)
     {
         _defaultTexture = texture;
     }
     if (OT.textureResourceFolder != "")
     {
         Texture2D tex = OTHelper.ResourceTexture(OT.textureResourceFolder + '/' + _defaultTexture.name);
         if (tex != null)
         {
             texture = tex;
         }
     }
     else
     {
         if (OT.sizeFactor != 1)
         {
             for (int i = 0; i < sizeTextures.Length; i++)
             {
                 if (sizeTextures[i].sizeFactor == OT.sizeFactor)
                 {
                     texture = sizeTextures[i].texture;
                 }
             }
         }
         else
         {
             if (_defaultTexture != null)
             {
                 texture = _defaultTexture;
             }
         }
     }
 }
 void HandleClipArea()
 {
     if (clipArea)
     {
         moveHandle.Activate();
         // set the clip layer so a camera is created
         (moveHandle.Sprite("clipArea") as OTClippingAreaSprite).clipLayer = 16;
         // set all children of 'sprites' to layer 16
         OTHelper.ChildrenSetLayer(GameObject.Find("sprites"), 16);
     }
     else
     {
         // set all children of 'sprites' to layer 0 = default
         OTHelper.ChildrenSetLayer(GameObject.Find("sprites"), 0);
         // set the clipLayer to 0 so the clipping camera is removed
         (moveHandle.Sprite("clipArea") as OTClippingAreaSprite).clipLayer = 0;
         // hide the movehandle and cliparea sprite
         moveHandle.Deactivate();
     }
 }
Example #3
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 || cleanSize)
        {
            CleanFrame();
            // 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();
    }
Example #4
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();
    }
    Vector3[] Points(int idx)
    {
        Matrix4x4 m  = new Matrix4x4();
        Vector2   ps = points[idx];
        Vector2   pp = (idx == 0)?points[points.Length - 1]:points[idx - 1];
        Vector2   pn = (idx == points.Length - 1)?points[0]:points[idx + 1];

        Vector2 ds = (ps - pp).normalized * (lineThickness / 2);

        m.SetTRS(Vector3.zero, Quaternion.Euler(0, 0, -90), Vector3.one);
        Vector2 dsn = m.MultiplyPoint3x4(ds);

        Vector2 dn = (pn - ps).normalized * (lineThickness / 2);

        m.SetTRS(Vector3.zero, Quaternion.Euler(0, 0, 90), Vector3.one);
        Vector2 dnn = m.MultiplyPoint3x4(dn);

        Vector2 p1, p2;

        if (idx == 0 && !filled)
        {
            p1 = ps - dnn;
            p2 = ps + dnn;
        }
        else
        if (idx == points.Length - 1 && !filled)
        {
            p1 = ps + dsn;
            p2 = ps - dsn;
        }
        else
        {
            try
            {
                Vector2 pss = ps + dsn;
                Vector2 pse = pss + ds;
                Vector2 pns = ps - dnn;
                Vector2 pne = pns + dn;

                p1 = OTHelper.LineIntersectionPoint(pse, pss, pne, pns);

                pss = ps - dsn;
                pse = pss + ds;

                pns = ps + dnn;
                pne = pns + dn;

                p2 = OTHelper.LineIntersectionPoint(pss, pse, pns, pne);
            }
            catch
            {
                // lines are parallel
                p1 = ps + dsn;
                p2 = ps - dsn;
            }
        }

        return(new Vector3[]
        {
            p1,
            p2
        });
    }