protected override void Start() { edgesCount = nodesCount - 1; var nodes = new GPUNode[nodesCount]; for (int i = 0; i < nodesCount; i++) { var n = nodes[i]; var p = new Vector3(Random.value - 0.5f, i * edgeLength, Random.value - 0.5f); n.position = n.prev = p; n.decay = 1f; nodes[i] = n; } var edges = new GPUEdge[edgesCount]; for (int i = 0; i < edgesCount; i++) { var e = edges[i]; e.a = i; e.b = i + 1; e.length = edgeLength; edges[i] = e; } simulator = new GPUVerletSimulator(nodes, edges); base.Start(); }
protected void Start() { var nodes = new GPUNode[tentaclesCount * divisionsCount]; var edges = new List <GPUEdge>(); for (int y = 0; y < tentaclesCount; y++) { var yoff = y * divisionsCount; for (int x = 0; x < divisionsCount - 1; x++) { var idx = yoff + x; var e = new GPUEdge(idx, idx + 1, edgeLength); edges.Add(e); } } simulator = new GPUVerletSimulator(nodes, edges.ToArray()); tipMesh = BuildTipMesh(1f); tentacleMesh = BuildTentacleMesh(divisionsCount, radialSegments); uint[] args = new uint[5] { 0, 0, 0, 0, 0 }; args[0] = tipMesh.GetIndexCount(0); args[1] = (uint)tentaclesCount; tipArgsBuffer = new ComputeBuffer(1, sizeof(uint) * args.Length, ComputeBufferType.IndirectArguments); tipArgsBuffer.SetData(args); args[0] = tentacleMesh.GetIndexCount(0); args[1] = (uint)tentaclesCount; tentacleArgsBuffer = new ComputeBuffer(1, sizeof(uint) * args.Length, ComputeBufferType.IndirectArguments); tentacleArgsBuffer.SetData(args); Init(); }