void ValidateMatrix(bool checkParent) { if (parent != null) { if (checkParent) { parent.ValidateMatrix(checkParent); } if (_parentMatrixVersion != parent._matrixVersion) { _outlineChanged = true; _parentMatrixVersion = parent._matrixVersion; } } if (_outlineChanged) { _outlineChanged = false; _matrixVersion++; Matrix mat = ToolSet.CreateMatrix(_position, _rotation, new Vector3(_scale.X, _scale.Y, 1), _skew); if (parent != null) { _localToWorldMatrix = mat * parent._localToWorldMatrix; } else { _localToWorldMatrix = mat; } } }
void UpdatePivotOffset() { float px = _pivot.X * _contentRect.Width; float py = _pivot.Y * _contentRect.Height; Matrix matrix = ToolSet.CreateMatrix(Vector3.Zero, _rotation, new Vector3(_scale.X, _scale.Y, 1), _skew); Vector3 offset = new Vector3(px, py, 0); Vector3.Transform(ref offset, ref matrix, out _pivotOffset); }