public void SetPositionDelta(Vector3 positionDelta)
{
Vector3 vector = positionDelta;
Vector3 minDragDifference = ManipulationToolUtility.minDragDifference;
if (this.transform.parent != null)
{
vector = this.transform.parent.InverseTransformVector(vector);
minDragDifference.x /= this.transform.parent.lossyScale.x;
minDragDifference.y /= this.transform.parent.lossyScale.y;
minDragDifference.z /= this.transform.parent.lossyScale.z;
}
bool flag = Mathf.Approximately(vector.x, 0f);
bool flag2 = Mathf.Approximately(vector.y, 0f);
bool flag3 = Mathf.Approximately(vector.z, 0f);
if (this.rectTransform == null)
{
Vector3 vector6 = this.localPosition + vector;
vector6.x = !flag ? MathUtils.RoundBasedOnMinimumDifference(vector6.x, minDragDifference.x) : this.localPosition.x;
vector6.y = !flag2 ? MathUtils.RoundBasedOnMinimumDifference(vector6.y, minDragDifference.y) : this.localPosition.y;
vector6.z = !flag3 ? MathUtils.RoundBasedOnMinimumDifference(vector6.z, minDragDifference.z) : this.localPosition.z;
this.transform.localPosition = vector6;
}
else
{
Vector3 vector7 = this.localPosition + vector;
vector7.z = !flag3 ? MathUtils.RoundBasedOnMinimumDifference(vector7.z, minDragDifference.z) : this.localPosition.z;
this.transform.localPosition = vector7;
Vector2 vector8 = this.anchoredPosition + vector;
vector8.x = !flag ? MathUtils.RoundBasedOnMinimumDifference(vector8.x, minDragDifference.x) : this.anchoredPosition.x;
vector8.y = !flag2 ? MathUtils.RoundBasedOnMinimumDifference(vector8.y, minDragDifference.y) : this.anchoredPosition.y;
this.rectTransform.anchoredPosition = vector8;
if (this.rectTransform.drivenByObject != null)
{
RectTransform.SendReapplyDrivenProperties(this.rectTransform);
}
}
}