{
  "Name": "WaveDistortAxis",
  "_id": "47b408b5-2762-4181-adeb-9d06fbe1073d",
  "Namespace": "lib.3d.modify",
  "Description": "Simple GPU-based deformer that distorts the incoming geometry with a sin-wave along a given axis.\r\n\r\nThe Region-parameters limit the effect has an effect, with the second Component smoothing the fall-off.\r\n\r\nDisclaimer: The computation of the normals i\r\n",
  "Inputs": [
    {
      "Name": "Code",
      "MetaInstanceID": "f6143d6d-d20d-48ba-978b-36ced14d7cd1",
      "DefaultValue": {
        "Type": "Text",
        "Value": [
          "//>>> _parameters\r",
          "float2 Length;",
          "float2 Amplitude;",
          "float2 Phase;",
          "float3 Axis;",
          "float3 Displace;",
          "float2 RegionMin;",
          "float2 RegionMax;",
          "float NormalSmoothing;",
          "//<<< _parameters\r",
          "\r",
          "struct Vertex\r",
          "{\r",
          "    float4 pos : POSITION;\r",
          "    float3 normal : NORMAL;\r",
          "    float4 col : COLOR;\r",
          "    float2 texCoord : TEXCOORD0;\r",
          "    float3 tangent : TANGENT0;\r",
          "    float3 binormal : BINORMAL0;\r",
          "};\r",
          "\r",
          "Vertex VertexMain(Vertex input)\r",
          "{\r",
          "    return input;\r",
          "}\r",
          "\r",
          "float _noiseTime=0;\r",
          "float _frequency=0;\r",
          "\r",
          "\r",
          "float3 getOffset(float lookUp) {\r",
          "        float t= clamp((lookUp - RegionMin.x) / RegionMin.y,0,1);\r",
          "        float rMin= t * t * t * (t * (t * 6 - 15) + 10);\r",
          "\r",
          "        t= clamp((lookUp - RegionMax.x + RegionMax.y) / RegionMax.y,0,1);\r",
          "        float rMax= 1-(t * t * t * (t * (t * 6 - 15) + 10));\r",
          "\r",
          "        float withinRegionFactor = smoothstep( max(RegionMin.x,lookUp), RegionMin.x, RegionMin.x + RegionMin.y);\r",
          "        float3 sinOffset = Displace * (sin(lookUp / Length.x + Phase.x) * Amplitude.x \r",
          "                                   + sin(lookUp / Length.y + Phase.y) * Amplitude.y) ;\r",
          "                                    \r",
          "        float3 offset =  sinOffset * withinRegionFactor  * rMin * rMax + Axis;\r",
          "    return offset;\r",
          "\r",
          "}\r",
          "\r",
          "\r",
          "[maxvertexcount(3)]\r",
          "void GeometryMain(triangle Vertex input[3], inout TriangleStream<Vertex> outputStream)\r",
          "{\r",
          "\r",
          "    \r",
          "    for (int i = 0; i < 3; i++)\r",
          "\t{\r",
          "        Vertex vertex = input[i];\r",
          "        float4 p = vertex.pos;\r",
          "        //p.xyz+= MeshOffset;\r",
          "        \r",
          "        float3 tmp = p * Axis;\r",
          "        \r",
          "        float lookUp =  tmp.x + tmp.y + tmp.z;\r",
          "        \r",
          "        // fade\r",
          "        //vertex.pos.xyz += offset;\r",
          "        vertex.pos.xyz += getOffset(lookUp);\r",
          "        float3 offsetA = getOffset(lookUp + NormalSmoothing);\r",
          "        float3 offsetB = getOffset(lookUp - NormalSmoothing);\r",
          "        \r",
          "        \r",
          "        //vertex.normal.xyz += dot(offsetA,offsetB);\r",
          "        vertex.normal.xyz += dot(Axis, offsetA-offsetB);\r",
          "        //vertex.pos.xyz += float3(0,1,0);\r",
          "        outputStream.Append(vertex);\r",
          "    }\r",
          "    \r",
          "    outputStream.RestartStrip();\r",
          "};\r",
          "\r",
          "\r",
          "GeometryShader pGSComp = CompileShader(gs_5_0, GeometryMain());\r",
          "GeometryShader pGSwSO = ConstructGSWithSO(pGSComp, \"POSITION; NORMAL.xyz; COLOR; TEXCOORD0.xy; TANGENT0.xyz; BINORMAL0.xyz\", NULL, NULL, NULL, 0);\r",
          "\r",
          "\r",
          "technique11 Render\r",
          "{\r",
          "    pass \r",
          "    {\r",
          "        SetVertexShader(CompileShader(vs_5_0, VertexMain()));\r",
          "        SetGeometryShader(pGSwSO);\r",
          "        SetPixelShader(NULL);\r",
          "    }\r",
          "}\r",
          "\r",
          ""
        ]
      },
      "MetaID": "c522a66e-3260-4692-b3e3-79fd0361fa3d",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Scene",
      "MetaInstanceID": "abb5b8d1-3e2d-4a38-95c9-e17d17ef804b",
      "DefaultValue": {
        "Type": "Scene",
        "Value": "Framefield.Core.Scene"
      },
      "MetaID": "79122951-7bc4-4c68-b085-866eab828248",
      "IsMultiInput": "False",
      "Relevance": "Required",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Length.Primary",
      "MetaInstanceID": "ff7d8c0a-8b7d-4a41-ac7c-1f604db20adc",
      "DefaultValue": {
        "Type": "Float",
        "Value": "1"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Length.Secondary",
      "MetaInstanceID": "e374ac1a-e2bd-486a-8b36-e4a26c0c1f8f",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0.1"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Amplitude.Primary",
      "MetaInstanceID": "c6e8d5ba-a3e9-4e86-804b-281717f7f01a",
      "DefaultValue": {
        "Type": "Float",
        "Value": "1"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Amplitude.Secondary",
      "MetaInstanceID": "d3e8fe0d-9560-4dcf-866b-99c89ade7477",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Phase.Primary",
      "MetaInstanceID": "b43354ec-4acf-41ad-9506-ea1846d34d2e",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Phase.Secondary",
      "MetaInstanceID": "36ea6602-a679-4f8e-8ac0-f19af9b1d39b",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Axis.X",
      "MetaInstanceID": "d6df0e5a-f2a3-4a3a-b80e-2dacb513f01a",
      "DefaultValue": {
        "Type": "Float",
        "Value": "1"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.01",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Axis.Y",
      "MetaInstanceID": "46769595-7d7c-42e3-82d3-b3d41053727a",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.01",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Axis.Z",
      "MetaInstanceID": "cea06648-ff9c-4b2d-996f-73ab35473ec4",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.01",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Displace.X",
      "MetaInstanceID": "1e457f6d-10ca-45d6-9b5e-29e5cd3ddf09",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.01",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Displace.Y",
      "MetaInstanceID": "2922a40c-cd54-4927-ac5f-7103cf446ce6",
      "DefaultValue": {
        "Type": "Float",
        "Value": "1"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.01",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "Displace.Z",
      "MetaInstanceID": "02948224-4cbd-47ff-bd16-e3cd01beeba7",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.01",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "RegionMin.Position",
      "MetaInstanceID": "efa06c2f-f8eb-440f-88c8-d2091ea359d0",
      "DefaultValue": {
        "Type": "Float",
        "Value": "-1000"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "RegionMin.Smooth",
      "MetaInstanceID": "f22b2e92-98f3-4e4d-90a3-8518c90d7205",
      "DefaultValue": {
        "Type": "Float",
        "Value": "1"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "0",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "RegionMax.Position",
      "MetaInstanceID": "2e41082f-ca62-4fd8-8b09-a265cf80e9fc",
      "DefaultValue": {
        "Type": "Float",
        "Value": "1000"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "RegionMax.Blend",
      "MetaInstanceID": "b223ad6d-2a7f-4ef9-91d9-b035e90979f1",
      "DefaultValue": {
        "Type": "Float",
        "Value": "1"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "0",
      "Max": "100000",
      "Scale": "0.1",
      "ScaleType": "Linear",
      "EnumValues": []
    },
    {
      "Name": "NormalSmoothing",
      "MetaInstanceID": "10861c99-3af0-4c96-89f3-a58711b3d542",
      "DefaultValue": {
        "Type": "Float",
        "Value": "0.01"
      },
      "MetaID": "3f76dee3-3897-44ac-82d6-25ce9f53a506",
      "IsMultiInput": "False",
      "Relevance": "Optional",
      "Description": "",
      "Min": "-100000",
      "Max": "100000",
      "Scale": "0.001",
      "ScaleType": "Linear",
      "EnumValues": []
    }
  ],
  "Outputs": [
    {
      "Name": "Scene",
      "MetaInstanceID": "4b0917ec-8631-4309-aa18-f95f56a5c617",
      "MetaID": "79122951-7bc4-4c68-b085-866eab828248"
    }
  ],
  "OperatorParts": [
    {
      "MetaInstanceID": "8d423933-b73b-4d2d-bda8-687791331764",
      "MetaID": "a788172e-e9ec-4892-b384-93c64695e4e6",
      "Name": "WaveDistortAxisFunc",
      "Version": "0aca82dc-0f7d-4622-a7b6-d6551744d0f8",
      "Type": "Float",
      "IsMultiInput": "True",
      "Script": [
        "//>>> _using",
        "using System;",
        "using System.Collections.Generic;",
        "using System.Linq;",
        "using System.Text;",
        "using SharpDX;",
        "using SharpDX.Direct3D11;",
        "using SharpDX.Windows;",
        "//<<< _using",
        "using Framefield.Core.OperatorPartTraits;",
        "using Framefield.Core.Rendering;",
        "using Buffer = SharpDX.Direct3D11.Buffer;",
        "using SharpDX.Direct3D;",
        "",
        "namespace Framefield.Core.IDa788172e_e9ec_4892_b384_93c64695e4e6",
        "{",
        "    public class Class_WaveDistortAxis : FXSourceCodeFunction, IFXSceneSourceCode, IMeshSupplier",
        "    {",
        "        //>>> _inputids",
        "        private enum InputId",
        "        {",
        "            Code = 0,",
        "            Scene = 1,",
        "            LengthPrimary = 2,",
        "            LengthSecondary = 3,",
        "            AmplitudePrimary = 4,",
        "            AmplitudeSecondary = 5,",
        "            PhasePrimary = 6,",
        "            PhaseSecondary = 7,",
        "            AxisX = 8,",
        "            AxisY = 9,",
        "            AxisZ = 10,",
        "            DisplaceX = 11,",
        "            DisplaceY = 12,",
        "            DisplaceZ = 13,",
        "            RegionMinPosition = 14,",
        "            RegionMinSmooth = 15,",
        "            RegionMaxPosition = 16,",
        "            RegionMaxBlend = 17,",
        "            NormalSmoothing = 18",
        "        }",
        "        //<<< _inputids",
        "",
        "        public Class_WaveDistortAxis()",
        "        {",
        "            _meshCollector = new MeshCollector(this);",
        "        }",
        "",
        "        public override void Dispose() ",
        "        {",
        "            Utilities.DisposeObj(ref _mesh);",
        "            base.Dispose();",
        "        }",
        "",
        "        public void AddMeshesTo(ICollection<Mesh> meshes)",
        "        {",
        "            UpdateMesh(new OperatorPartContext(), OperatorPart.Connections);",
        "            if (_mesh != null)",
        "                meshes.Add(_mesh);",
        "        }",
        "",
        "        public override OperatorPartContext Eval(OperatorPartContext context, List<OperatorPart> inputs, int outputIdx)",
        "        {",
        "            try",
        "            {",
        "                UpdateMesh(context, inputs);",
        "",
        "                if (_mesh.Vertices != null)",
        "                {",
        "                    // render stream output to screen or whatever target is set",
        "                    context.Renderer.SetupEffect(context);",
        "                    context.Renderer.Render(_mesh, context);",
        "                }",
        "            }",
        "            catch (Exception exception)",
        "            {",
        "                Logger.Error(this, \"Load Effect error: {0}\", exception.Message);",
        "            }",
        "",
        "            return context;",
        "        }",
        "",
        "        bool _firstEval = true;",
        "        private void UpdateMesh(OperatorPartContext context, List<OperatorPart> inputs)",
        "        {",
        "            if (_firstEval)",
        "            {",
        "                for (int i = 0; i < NumCodes(); ++i)",
        "                    Compile(i);",
        "                _firstEval = false;",
        "                Changed = true;",
        "            }",
        "",
        "            if (!Changed && _mesh.Vertices != null)",
        "                return;",
        "",
        "            //>>> _params",
        "            var Code = inputs[(int)InputId.Code].Eval(context).Text;",
        "            var Scene = inputs[(int)InputId.Scene];",
        "            var LengthPrimary = inputs[(int)InputId.LengthPrimary].Eval(context).Value;",
        "            var LengthSecondary = inputs[(int)InputId.LengthSecondary].Eval(context).Value;",
        "            var Length = new Vector2(LengthPrimary, LengthSecondary);",
        "            var AmplitudePrimary = inputs[(int)InputId.AmplitudePrimary].Eval(context).Value;",
        "            var AmplitudeSecondary = inputs[(int)InputId.AmplitudeSecondary].Eval(context).Value;",
        "            var Amplitude = new Vector2(AmplitudePrimary, AmplitudeSecondary);",
        "            var PhasePrimary = inputs[(int)InputId.PhasePrimary].Eval(context).Value;",
        "            var PhaseSecondary = inputs[(int)InputId.PhaseSecondary].Eval(context).Value;",
        "            var Phase = new Vector2(PhasePrimary, PhaseSecondary);",
        "            var AxisX = inputs[(int)InputId.AxisX].Eval(context).Value;",
        "            var AxisY = inputs[(int)InputId.AxisY].Eval(context).Value;",
        "            var AxisZ = inputs[(int)InputId.AxisZ].Eval(context).Value;",
        "            var Axis = new Vector3(AxisX, AxisY, AxisZ);",
        "            var DisplaceX = inputs[(int)InputId.DisplaceX].Eval(context).Value;",
        "            var DisplaceY = inputs[(int)InputId.DisplaceY].Eval(context).Value;",
        "            var DisplaceZ = inputs[(int)InputId.DisplaceZ].Eval(context).Value;",
        "            var Displace = new Vector3(DisplaceX, DisplaceY, DisplaceZ);",
        "            var RegionMinPosition = inputs[(int)InputId.RegionMinPosition].Eval(context).Value;",
        "            var RegionMinSmooth = inputs[(int)InputId.RegionMinSmooth].Eval(context).Value;",
        "            var RegionMin = new Vector2(RegionMinPosition, RegionMinSmooth);",
        "            var RegionMaxPosition = inputs[(int)InputId.RegionMaxPosition].Eval(context).Value;",
        "            var RegionMaxBlend = inputs[(int)InputId.RegionMaxBlend].Eval(context).Value;",
        "            var RegionMax = new Vector2(RegionMaxPosition, RegionMaxBlend);",
        "            var NormalSmoothing = inputs[(int)InputId.NormalSmoothing].Eval(context).Value;",
        "            //<<< _params",
        "",
        "            if (Scene.Func.Changed || _mesh.Vertices == null)",
        "            {",
        "                //Logger.Info(this, \"collect meshes\");",
        "                _meshCollector.Collect(Scene);",
        "                Scene.Func.Changed = false;",
        "            }",
        "",
        "            var inputMesh = _meshCollector.FirstMeshOrDefault;",
        "            if (inputMesh == null)",
        "                return;",
        "",
        "            _mesh.AttributesSize = inputMesh.AttributesSize;",
        "            _mesh.NumTriangles = inputMesh.NumTriangles;",
        "            _mesh.InputElements = inputMesh.InputElements;",
        "            if (_mesh.Vertices == null || _mesh.Vertices.Description.SizeInBytes != inputMesh.Vertices.Description.SizeInBytes)",
        "            {",
        "                if (_mesh.Vertices != null)",
        "                    _mesh.Vertices.Dispose();",
        "",
        "                _mesh.Vertices = new Buffer(D3DDevice.Device, new BufferDescription()",
        "                                                                    {",
        "                                                                        BindFlags = BindFlags.StreamOutput | BindFlags.VertexBuffer,",
        "                                                                        CpuAccessFlags = CpuAccessFlags.None,",
        "                                                                        OptionFlags = ResourceOptionFlags.None,",
        "                                                                        SizeInBytes = _mesh.NumTriangles*inputMesh.AttributesSize*3,",
        "                                                                        Usage = ResourceUsage.Default",
        "                                                                    });",
        "            }",
        "",
        "            _effect.GetVariableByName(\"Length\").AsVector().Set(Length);",
        "            _effect.GetVariableByName(\"Amplitude\").AsVector().Set(Amplitude);",
        "            _effect.GetVariableByName(\"Phase\").AsVector().Set(Phase);",
        "            _effect.GetVariableByName(\"Axis\").AsVector().Set(Axis);",
        "            _effect.GetVariableByName(\"Displace\").AsVector().Set(Displace);",
        "            _effect.GetVariableByName(\"RegionMin\").AsVector().Set(RegionMin);",
        "            _effect.GetVariableByName(\"RegionMax\").AsVector().Set(RegionMax);",
        "            _effect.GetVariableByName(\"NormalSmoothing\").AsScalar().Set(NormalSmoothing);",
        "            ",
        "",
        "            context.D3DDevice.ImmediateContext.StreamOutput.SetTargets(new [] { new StreamOutputBufferBinding(_mesh.Vertices, 0) });",
        "            context.D3DDevice.ImmediateContext.OutputMerger.DepthStencilState = new DepthStencilState(context.D3DDevice,",
        "                                                                                                        new DepthStencilStateDescription()",
        "                                                                                                            {",
        "                                                                                                                IsDepthEnabled = false,",
        "                                                                                                                IsStencilEnabled = false",
        "                                                                                                            });",
        "            context.D3DDevice.ImmediateContext.InputAssembler.InputLayout = context.InputLayout;",
        "            context.D3DDevice.ImmediateContext.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;",
        "            context.D3DDevice.ImmediateContext.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(inputMesh.Vertices, inputMesh.AttributesSize, 0));",
        "            var technique = _effect.GetTechniqueByIndex(0);",
        "            technique.GetPassByIndex(0).Apply(context.D3DDevice.ImmediateContext);",
        "            context.D3DDevice.ImmediateContext.Draw(_mesh.NumTriangles*3, 0);",
        "            context.D3DDevice.ImmediateContext.StreamOutput.SetTargets(new [] { new StreamOutputBufferBinding(null, 0) });",
        "",
        "            Changed = false;",
        "        }",
        "",
        "        private Mesh _mesh = new Mesh();",
        "        private MeshCollector _meshCollector;",
        "    }",
        "}",
        "",
        "",
        ""
      ],
      "AdditionalAssemblies": []
    }
  ],
  "Operators": [],
  "Connections": [
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "8d423933-b73b-4d2d-bda8-687791331764",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "4b0917ec-8631-4309-aa18-f95f56a5c617"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "f6143d6d-d20d-48ba-978b-36ced14d7cd1",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "abb5b8d1-3e2d-4a38-95c9-e17d17ef804b",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "ff7d8c0a-8b7d-4a41-ac7c-1f604db20adc",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "e374ac1a-e2bd-486a-8b36-e4a26c0c1f8f",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "c6e8d5ba-a3e9-4e86-804b-281717f7f01a",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "d3e8fe0d-9560-4dcf-866b-99c89ade7477",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "b43354ec-4acf-41ad-9506-ea1846d34d2e",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "36ea6602-a679-4f8e-8ac0-f19af9b1d39b",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "d6df0e5a-f2a3-4a3a-b80e-2dacb513f01a",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "46769595-7d7c-42e3-82d3-b3d41053727a",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "cea06648-ff9c-4b2d-996f-73ab35473ec4",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "1e457f6d-10ca-45d6-9b5e-29e5cd3ddf09",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "2922a40c-cd54-4927-ac5f-7103cf446ce6",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "02948224-4cbd-47ff-bd16-e3cd01beeba7",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "efa06c2f-f8eb-440f-88c8-d2091ea359d0",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "f22b2e92-98f3-4e4d-90a3-8518c90d7205",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "2e41082f-ca62-4fd8-8b09-a265cf80e9fc",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "b223ad6d-2a7f-4ef9-91d9-b035e90979f1",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    },
    {
      "SourceOp": "00000000-0000-0000-0000-000000000000",
      "SourceOpPart": "10861c99-3af0-4c96-89f3-a58711b3d542",
      "TargetOp": "00000000-0000-0000-0000-000000000000",
      "TargetOpPart": "8d423933-b73b-4d2d-bda8-687791331764"
    }
  ]
}