public void SetScaleDelta(Vector3 scaleDelta, Vector3 scalePivot, Quaternion scaleRotation, bool preferRectResize)
{
this.SetPosition(((Vector3) (scaleRotation * Vector3.Scale((Vector3) (Quaternion.Inverse(scaleRotation) * (this.position - scalePivot)), scaleDelta))) + scalePivot);
Vector3 minDragDifference = ManipulationToolUtility.minDragDifference;
if (this.transform.parent != null)
{
minDragDifference.x /= this.transform.parent.lossyScale.x;
minDragDifference.y /= this.transform.parent.lossyScale.y;
minDragDifference.z /= this.transform.parent.lossyScale.z;
}
Quaternion ownRotation = (!Tools.rectBlueprintMode || !InternalEditorUtility.SupportsRectLayout(this.transform)) ? this.rotation : this.transform.parent.rotation;
Quaternion refAlignment = this.GetRefAlignment(scaleRotation, ownRotation);
scaleDelta = (Vector3) (refAlignment * scaleDelta);
scaleDelta = Vector3.Scale(scaleDelta, (Vector3) (refAlignment * Vector3.one));
if (preferRectResize && (this.rectTransform != null))
{
Vector2 vector5 = (this.sizeDelta + Vector2.Scale(this.rect.size, scaleDelta)) - this.rect.size;
vector5.x = MathUtils.RoundBasedOnMinimumDifference(vector5.x, minDragDifference.x);
vector5.y = MathUtils.RoundBasedOnMinimumDifference(vector5.y, minDragDifference.y);
this.rectTransform.sizeDelta = vector5;
if (this.rectTransform.drivenByObject != null)
{
RectTransform.SendReapplyDrivenProperties(this.rectTransform);
}
}
else
{
this.SetScaleValue(Vector3.Scale(this.scale, scaleDelta));
}
}