예제 #1
0
        public void PreEvaluate(OperatorPart opPart)
        {
            if (opPart.Disabled)
            {
                return;
            }

            var transformFunc = opPart.Func as ISceneTransform;

            if (transformFunc != null)
            {
                _transforms.Push(transformFunc.Transform * _transforms.Peek());
            }

            var meshSupplier = opPart.Func as IMeshSupplier;

            if (meshSupplier != null)
            {
                if (!CollectedMeshes.ContainsKey(_transforms.Peek()))
                {
                    CollectedMeshes.Add(_transforms.Peek(), new List <Mesh>());
                }
                meshSupplier.AddMeshesTo(CollectedMeshes[_transforms.Peek()]);
            }
        }
예제 #2
0
 public void Collect(OperatorPart startPoint)
 {
     Clear();
     startPoint.TraverseWithFunction(this, this);
     if (!CollectedMeshes.Any())
     {
         Logger.Warn(_parent, "Found no mesh supplier, have you forgotten to add an input?");
     }
 }
예제 #3
0
 private void Clear()
 {
     CollectedMeshes.Clear();
     _transforms.Clear();
     _transforms.Push(Matrix.Identity);
 }