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(); } }
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(); }
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 }); }