public FigureSystemOutputs UpdateFrame(DeviceContext context, FigureSystemOutputs parentOutputs, ChannelInputs inputs) { var channelOutputs = definition.ChannelSystem.Evaluate(parentOutputs?.ChannelOutputs, inputs); StagedSkinningTransform[] boneTransforms; if (parentOutputs == null) { boneTransforms = definition.BoneSystem.GetBoneTransforms(channelOutputs); } else { boneTransforms = (StagedSkinningTransform[])parentOutputs.BoneTransforms.Clone(); BoneSystem.PrependChildToParentBindPoseTransforms(definition.ChildToParentBindPoseTransforms, boneTransforms); } occluder.SetValues(context, channelOutputs); shaper.SetValues(context, channelOutputs, boneTransforms); return(new FigureSystemOutputs(channelOutputs, boneTransforms)); }