public override void Apply(ITransform transform) { if (false == Enter(transform)) { return; } var curModel = _modelMatrixStack.Any() ? _modelMatrixStack.Peek() : Matrix4x4.Identity; transform.ComputeLocalToWorldMatrix(ref curModel, this); if (transform.ReferenceFrame != Transform.ReferenceFrameType.Relative) { PushViewMatrix(Matrix4x4.Identity); } PushModelMatrix(curModel); PushClone(); Traverse(transform); PopClone(); PopModelmatrix(); if (transform.ReferenceFrame != Transform.ReferenceFrameType.Relative) { PopViewMatrix(); } Leave(); }
public override void Apply(ITransform transform) { var curModel = ModelMatrixStack.Peek(); transform.ComputeLocalToWorldMatrix(ref curModel, this); ModelMatrixStack.Push(curModel); Apply((Node)transform); ModelMatrixStack.Pop(); }
public override void Apply(ITransform transform) { if (_coordMode == CoordMode.LocalToWorld) { transform.ComputeLocalToWorldMatrix(ref _matrix, this); } else // WorldToLocal { transform.ComputeWorldToLocalMatrix(ref _matrix, this); } }