コード例 #1
0
    public void AddInDeformingForce(Vector3 point, float force)
    {
        point = transform.InverseTransformPoint(point);
        if (lastPoint == Vector3.zero)
        {
            lastPoint = point;
        }

        else if (lastPoint != Vector3.zero && lastPoint != point)
        {
            lastPoint = point;
            ClearVertexVelocities();
        }

        Dispatch(force, point);
        //根据Shader返回的buffer数据更新物体信息
        DBuffer[] values = new DBuffer[bufferArrayLength];
        buffer.GetData(values);
        for (int i = 0; i < bufferArrayLength; i++)
        {
            displacedVertices[i] = values[i].vertexPos;
        }

        deformingMesh.vertices = displacedVertices;
        deformingMesh.RecalculateNormals();
        collider.sharedMesh = deformingMesh;
    }
コード例 #2
0
 void CreateBuffer()
 {
     //count数组的长度(等于2个三维的积 2x2x1 * 2x2x1),40是结构体的字节长度
     buffer = new ComputeBuffer(bufferArrayLength, 12);
     DBuffer[] values = new DBuffer[bufferArrayLength];
     for (int i = 0; i < bufferArrayLength; i++)
     {
         DBuffer m = new DBuffer();
         SetStruct(ref m, displacedVertices[i]);
         values[i] = m;
     }
     // 初始化结构体并赋予buffer
     buffer.SetData(values);
 }
コード例 #3
0
        static async Task Main(string[] args)
        {
            var systemName = "distributed-environment-name";
            var conf       = Config.GetDockerConfigString(systemName);
            var env        = await DistributedEnvironment.Initialize(systemName, conf);

            //var dInt = new DInt("int-name", env);
            //await Task.Delay(5000);

            //for (int i = 0; i < 100; i++)
            //{
            //  Console.WriteLine(await dInt.AddAsync(1));
            //  await Task.Delay(100);
            //}


            //if (bool.Parse(Environment.GetEnvironmentVariable("IS_PROD")))
            //{
            //  for (int i = 0; i < 50; i++)
            //  {
            //    await Task.Delay(100);
            //    var count = await dInt.AddAsync(1);
            //    Console.WriteLine($"Current count: {count}");
            //  }
            //}
            //else
            //{
            //  for (int i = 0; i < 100; i++)
            //  {
            //    var whatIGet = await dInt.SubtractIfResultIsPositive(5);
            //    Console.WriteLine($"Count decreased to: {whatIGet}");
            //  }
            //}

            var hostname = Environment.GetEnvironmentVariable("HOSTNAME");
            var rand     = new Random();
            var buffer   = new DBuffer <string>(5, "buffer-name", env);
            await Task.Delay(5000);

            if (bool.Parse(Environment.GetEnvironmentVariable("IS_PROD")))
            {
                for (int i = 0; i < 50; i++)
                {
                    await Task.Delay(TimeSpan.FromMilliseconds(rand.Next() % 500 + 100));

                    await buffer.Add($"{hostname} : <{i}>");

                    Console.WriteLine($"Producing >>>>>>>> [{hostname} : <{i}>]");
                }
            }
            else
            {
                for (int i = 0; i < 100; i++)
                {
                    await Task.Delay(TimeSpan.FromMilliseconds(rand.Next() % 500 + 500));

                    var whatIGet = await buffer.Take();

                    Console.WriteLine($"Consuming <<<<<<<< [{whatIGet}]");
                }
            }

            await Task.Delay(-1);
        }
コード例 #4
0
 void SetStruct(ref DBuffer m, Vector3 vertexPos)
 {
     m.vertexPos = vertexPos;
 }