public void SetPosition(float xv, float yv, float zv)
{
if (_x != xv || _y != yv || _z != zv)
{
float dx = xv - _x;
float dy = yv - _y;
_x = xv;
_y = yv;
_z = zv;
HandlePositionChanged();
if (this is GGroup)
((GGroup)this).MoveChildren(dx, dy);
UpdateGear(1);
if (parent != null && !(parent is GList))
{
parent.SetBoundsChangedFlag();
onPositionChanged.Call();
}
if (draggingObject == this && !sUpdateInDragging)
sGlobalRect = this.LocalToGlobal(new Rect(0, 0, this.width, this.height));
}
}