protected override void Initialize()
        {
            // Inputs
            InputSlot.CreateOrResetRequiredMutating <Surface>(ref surfaceInputSlot, this);
            InputSlot.CreateOrResetRequiredMutating <Topology>(ref topologyInputSlot, this);
            InputSlot.CreateOrResetOptionalMutating <IVertexAttribute <Vector3> >(ref vertexPositionsInputSlot, this);

            // Fields
            passCount = 1;
            frequency = 0.1f;

            randomness.Initialize(this);

            minVertexNeighbors = 3;
            maxVertexNeighbors = 5;
            minFaceNeighbors   = 3;
            maxFaceNeighbors   = 7;

            lockBoundaryPositions = true;

            relaxForRegularityWeight = 0.5f;

            maxRelaxIterations     = 20;
            relaxRelativePrecision = 0.95f;
            maxRepairIterations    = 20;
            repairRate             = 0.5f;
        }