private void UpdateTransform() { if (transformTranslate) { Vector2 translate = translateFunction.Value(ValueF2); Vector2 size; if (TryGetNativeSize(out size)) { imageObject.transform.localPosition = new Vector2( translate.x * size.x, translate.y * size.y); } } if (transformRotate) { Quaternion rotate = rotateFunction.Value(ValueF2); var localRotation = Quaternion.identity * Quaternion.Inverse(rotate); // ReSharper disable once RedundantCheckBeforeAssignment if (imageObject.transform.localRotation != localRotation) { imageObject.transform.localRotation = localRotation; } } if (transformScale) { Vector3 scale = scaleFunction.Value(ValueF2); MadTransform.SetLocalScale(imageObject.transform, scale); } }
void DrawObject() { Vector3 translate = Vector3.zero; if (transformTranslate) { translate = translateFunction.Value(ValueF2); translate = new Vector3(translate.x * sizeReal.x, translate.y * sizeReal.y, 0); } Quaternion rotation = Quaternion.identity; if (transformRotate) { rotation = rotateFunction.Value(ValueF2); } Vector3 scale = Vector3.one; if (transformScale) { scale = scaleFunction.Value(ValueF2); } float tx = textureObject.width * transformAnchor.x; float ty = textureObject.height * transformAnchor.y; var matrix = Matrix4x4.identity; MadMatrix.Translate(ref matrix, -tx, -ty, 0); MadMatrix.Scale(ref matrix, scale); MadMatrix.Rotate(ref matrix, rotation); MadMatrix.Scale(ref matrix, sizeReal.x / sizeOrig.x, sizeReal.y / sizeOrig.y, 1); // if (positionSizeFromTransform) { // MadMatrix.Scale(ref matrix, transform.lossyScale); // } MadMatrix.Translate(ref matrix, screenPositionReal); MadMatrix.Translate(ref matrix, sizeReal.x / 2, sizeReal.y / 2, 0); MadMatrix.Translate(ref matrix, translate); GUI.matrix = matrix; DrawTexture( new Rect( 0, 0, textureObject.width, textureObject.height), textureObject.texture, textureObject.color); GUI.matrix = Matrix4x4.identity; }
private void UpdateTransform() { if (transformTranslate) { Vector2 translate = translateFunction.Value(ValueF2); var bounds = objectSprite.GetBounds(); objectSprite.transform.localPosition = new Vector2( translate.x * bounds.width, translate.y * bounds.height); } if (transformRotate) { Quaternion rotate = rotateFunction.Value(ValueF2); objectSprite.transform.localRotation = Quaternion.identity * Quaternion.Inverse(rotate); } if (transformScale) { Vector3 scale = scaleFunction.Value(ValueF2); objectSprite.transform.localScale = scale; } }