public CubeParticleVox(CubeLedSeq led, Bounds b, HashSet <IParticleObject> pos)
     : base(led, b, pos)
 {
     cubeledseq = led;
     LEDX       = led.LEDX;
     LEDY       = led.LEDY;
     LEDZ       = led.LEDZ;
 }
Beispiel #2
0
 public CubeMeshVox(CubeLedSeq seq, Bounds b, HashSet <IMeshObject> objs)
     : base(seq, b, objs)
 {
     cubeledseq = seq;
     LEDX       = cubeledseq.LEDX;
     LEDY       = cubeledseq.LEDY;
     LEDZ       = cubeledseq.LEDZ;
 }
    static LedSeq validHeader(Stream sw)
    {
        uint[] header = new uint[HEADERNUM];
        byte[] buf    = new byte[header.Length * sizeof(uint)];
        sw.Read(buf, 0, buf.Length);
        Buffer.BlockCopy(buf, 0, header, 0, buf.Length);

        if (header[(int)HeaderItem.Version] != version)
        {
            Debug.LogError("the ledseq version mismatch " + header[(int)HeaderItem.Version]);
            return(null);
        }

        LedSeq ledseq = null;

        switch (header[(int)HeaderItem.Shape])
        {
        case (uint)Shape.Cube:
            ledseq = new CubeLedSeq();
            break;

        case (uint)Shape.Cylinder:
            ledseq = new CylinderLeqSeq();
            break;

        default:
            return(null);
        }
        Buffer.BlockCopy(header, 0, ledseq.header, 0, header.Length * sizeof(uint));

        buf = new byte[ledseq.param1.Length * sizeof(uint)];
        sw.Read(buf, 0, buf.Length);
        Buffer.BlockCopy(buf, 0, ledseq.param1, 0, buf.Length);

        buf = new byte[ledseq.param2.Length * sizeof(float)];
        sw.Read(buf, 0, buf.Length);
        Buffer.BlockCopy(buf, 0, ledseq.param2, 0, buf.Length);

        return(ledseq);
    }
Beispiel #4
0
    public CubeMatrix(CubeLedSeq ledseq)
        : base(ledseq)
    {
        origin     = new Vector3(100f, 0, 500 - ledseq.LEDZ / 2 * step);
        cubeledseq = ledseq;

        LEDX = ledseq.LEDX;
        LEDY = ledseq.LEDY;
        LEDZ = ledseq.LEDZ;

        ledcubes = new GameObject[TOTAL];
        ledmats  = new Material[TOTAL];

        GameObject go = null;

        bounds = new Bounds(origin, new Vector3());

        parent = new GameObject("CubeMatrix");
        for (int i = 0; i < LEDX; i++)
        {
            for (int j = 0; j < LEDY; j++)
            {
                for (int k = 0; k < LEDZ; k++)
                {
                    go = GameObject.CreatePrimitive(PrimitiveType.Cube);
                    go.transform.position   = new Vector3(i * step, j * step, k * step) + origin;
                    go.transform.localScale = new Vector3(step, step, step);
                    go.SetActive(false);
                    go.transform.parent = parent.transform;
                    bounds.Encapsulate(new Vector3(i * step, j * step, k * step) + origin);
                    ledmats[ledseq.getLedIdx(i, j, k)]  = go.GetComponent <MeshRenderer>().material;
                    ledcubes[ledseq.getLedIdx(i, j, k)] = go;
                }
            }
        }
    }
Beispiel #5
0
    public CubeLedMatrix(CubeLedSeq ledseq)
        : base(ledseq)
    {
        origin     = new Vector3(100f, 0, 500 - ledseq.LEDZ / 2 * step);
        cubeledseq = ledseq;

        LEDX = ledseq.LEDX;
        LEDY = ledseq.LEDY;
        LEDZ = ledseq.LEDZ;

        UnityEngine.Object o = Resources.Load("sampleled");
        thecube = (GameObject)GameObject.Instantiate(o, Vector3.zero, Quaternion.identity);
        Material themat = thecube.GetComponent <MeshRenderer>().material;

        ledcubes = new GameObject[TOTAL];
        ledmats  = new Material[TOTAL];

        parent = new GameObject("CubeLedPillar");

        Material transmat = (Material)Resources.Load("transmat", typeof(Material));

        transmat.color = new Color(143f / 255f, 143f / 255f, 143f / 255f, 50 / 255f);

        GameObject go = null;

        for (int i = 0; i < LEDX; i++)
        {
            for (int k = 0; k < LEDZ; k++)
            {
                go = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
                go.transform.position   = new Vector3(i * step, 0, k * step) + new Vector3(0f, step * LEDY / 2, 0f) + origin;
                go.transform.parent     = parent.transform;
                go.transform.localScale = new Vector3(1f, step * LEDY / 2, 0.2f);
                go.GetComponent <MeshRenderer>().material = new Material(transmat);
            }
        }

        GameObject top = GameObject.CreatePrimitive(PrimitiveType.Cube);

        top.name = "cubetop";
        top.transform.localScale = new Vector3(LEDX * step * 1.1f, 2f, LEDZ * step * 1.1f);
        top.transform.position   = new Vector3(LEDX / 2 * step, step * LEDY * 1f, LEDZ / 2 * step) + origin;
        top.GetComponent <MeshRenderer>().material = new Material(Shader.Find("Diffuse"));

        bounds = new Bounds(origin, new Vector3());

        parent = new GameObject("CubeLedMatrix");
        GameObject l = GameObject.Find("plight");

        for (int i = 0; i < LEDX; i++)
        {
            for (int j = 0; j < LEDY; j++)
            {
                for (int k = 0; k < LEDZ; k++)
                {
                    go = GameObject.CreatePrimitive(PrimitiveType.Cube);
                    go.transform.position = new Vector3(i * step, j * step, k * step) + origin;
                    go.SetActive(false);
                    go.transform.parent = parent.transform;
                    bounds.Encapsulate(new Vector3(i * step, j * step, k * step) + origin);
                    ledmats[ledseq.getLedIdx(i, j, k)] = go.GetComponent <MeshRenderer>().material = new Material(themat);
                    ledmats[ledseq.getLedIdx(i, j, k)].SetVector("_MKGlowColor", new Vector4(1f, 1f, 1f, 1f));
                    ledcubes[ledseq.getLedIdx(i, j, k)] = go;

                    if (reflect)
                    {
                        GameObject ll = GameObject.Instantiate(l);
                        ll.transform.position = go.transform.position;
                        ll.transform.parent   = go.transform;
                    }
                }
            }
        }
    }