Beispiel #1
0
    public void Initialize(ComputeShader computeShader, Material renderMat)
    {
        this.renderMat     = renderMat;
        this.computeShader = computeShader;

        quadVerticesCBuffer = new ComputeBuffer(6, sizeof(float) * 3);
        quadVerticesCBuffer.SetData(new[] {
            new Vector3(-0.5f, 0.5f),
            new Vector3(0.5f, 0.5f),
            new Vector3(0.5f, -0.5f),
            new Vector3(0.5f, -0.5f),
            new Vector3(-0.5f, -0.5f),
            new Vector3(-0.5f, 0.5f)
        });

        ChainLinkData[] chainDataArray = new ChainLinkData[numChains * numLinksPerChain];
        for (int i = 0; i < chainDataArray.Length; i++)
        {
            //int agentIndex = (int)Mathf.Floor((float)i / numLinksPerChain);
            float   trailPos = (float)i % (float)numLinksPerChain;
            Vector2 randPos  = new Vector2(UnityEngine.Random.Range(-60f, 60f), UnityEngine.Random.Range(-60f, 60f));
            chainDataArray[i]          = new ChainLinkData();
            chainDataArray[i].worldPos = randPos + new Vector2(0f, trailPos * -1f);
        }
        chains0CBuffer = new ComputeBuffer(chainDataArray.Length, sizeof(float) * 2);
        chains0CBuffer.SetData(chainDataArray);
        chains1CBuffer = new ComputeBuffer(chainDataArray.Length, sizeof(float) * 2);

        this.renderMat.SetPass(0);
        this.renderMat.SetBuffer("verticesCBuffer", quadVerticesCBuffer);
        this.renderMat.SetBuffer("chainsReadCBuffer", chains0CBuffer);
        this.renderMat.SetFloat("_MapSize", SimulationManager._MapSize);
    }
Beispiel #2
0
 public virtual void link(ChainLinkData data)
 {
     if (condition.doesPass(data.getData()))
     {
         MLNumericParam passOn = filter.filter(data.getData());
         target_.enforce(passOn);
     }
 }
Beispiel #3
0
    public override void link(ChainLinkData data)
    {
        if (!hasLinkedOnce)
        {
            DBUG(name + "] has never linked");
            base.link(data);
            prevParam = data.getData();
            return;
        }
        if (valve.isOpen(prevParam.Value, data.getData()))
        {
            DBUG(name + " valve open");
            base.link(data);
        }
        else
        {
            DBUG(name + " valve closed");
        }

        prevParam = data.getData();
    }