public void ApplyOnSelfSizeChanged(float dWidth, float dHeight) { int cnt = _defs.Count; if (cnt == 0) { return; } float ox = _owner.x; float oy = _owner.y; for (int i = 0; i < cnt; i++) { RelationDef info = _defs[i]; switch (info.type) { case RelationType.Center_Center: case RelationType.Right_Center: _owner.x -= dWidth / 2; break; case RelationType.Right_Left: case RelationType.Right_Right: _owner.x -= dWidth; break; case RelationType.Middle_Middle: case RelationType.Bottom_Middle: _owner.y -= dHeight / 2; break; case RelationType.Bottom_Top: case RelationType.Bottom_Bottom: _owner.y -= dHeight; break; } } if (!Mathf.Approximately(ox, _owner.x) || !Mathf.Approximately(oy, _owner.y)) { ox = _owner.x - ox; oy = _owner.y - oy; _owner.UpdateGearFromRelations(1, ox, oy); if (_owner.parent != null) { int transCount = _owner.parent._transitions.Count; for (int i = 0; i < transCount; i++) { _owner.parent._transitions[i].UpdateFromRelations(_owner.id, ox, oy); } } } }