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