public override void OnInspectorGUI() { base.OnInspectorGUI(); UniformScale uniformScale = (UniformScale)target; uniformScale.transform.localScale = new Vector3(uniformScale.Scale, uniformScale.Scale, uniformScale.Scale); }
private void Update(EvaluationContext context) { var s = Scale.GetValue(context) * UniformScale.GetValue(context); var r = Rotation.GetValue(context); float yaw = MathUtil.DegreesToRadians(r.Y); float pitch = MathUtil.DegreesToRadians(r.X); float roll = MathUtil.DegreesToRadians(r.Z); var t = Translation.GetValue(context); var objectToParentObject = Matrix.Transformation(Vector3.Zero, Quaternion.Identity, new Vector3(s.X, s.Y, s.Z), Vector3.Zero, Quaternion.RotationYawPitchRoll(yaw, pitch, roll), new Vector3(t.X, t.Y, t.Z)); // transpose all as mem layout in hlsl constant buffer is row based objectToParentObject.Transpose(); if (Invert.GetValue(context)) { objectToParentObject.Invert(); } _matrix[0] = objectToParentObject.Row1; _matrix[1] = objectToParentObject.Row2; _matrix[2] = objectToParentObject.Row3; _matrix[3] = objectToParentObject.Row4; Result.Value = _matrix; }
private void Update(EvaluationContext context) { TransformCallback?.Invoke(this, context); // this this is stupid stupid var s = Scale.GetValue(context) * UniformScale.GetValue(context); var r = Rotation.GetValue(context); float yaw = MathUtil.DegreesToRadians(r.Y); float pitch = MathUtil.DegreesToRadians(r.X); float roll = MathUtil.DegreesToRadians(r.Z); var t = Translation.GetValue(context); var objectToParentObject = Matrix.Transformation(scalingCenter: Vector3.Zero, scalingRotation: Quaternion.Identity, scaling: new Vector3(s.X, s.Y, s.Z), rotationCenter: Vector3.Zero, rotation: Quaternion.RotationYawPitchRoll(yaw, pitch, roll), translation: new Vector3(t.X, t.Y, t.Z)); var previousWorldTobject = context.ObjectToWorld; context.ObjectToWorld = Matrix.Multiply(objectToParentObject, context.ObjectToWorld); Command.GetValue(context); context.ObjectToWorld = previousWorldTobject; }