Пример #1
0
    public void PlaceBlock(RaycastHit p_hitInfo)
    {
        Vector3 dir      = p_hitInfo.normal;
        Vector3 offset   = p_hitInfo.point - p_hitInfo.transform.position;
        Vector3 spawnPos = p_hitInfo.transform.position + (Vector3.Scale(p_hitInfo.collider.bounds.extents, dir));// + offset;

        //kolla vilken sida; skulle vara najs med en switch men kommer inte på hur :p OOOOOOOOOOOOOOOOOOOOOOO
        //så det blir stupid solution
        int side         = 0;
        int oppositeSide = 5;

        if (dir == Vector3.forward)
        {
            side         = 1;
            oppositeSide = 3;
        }
        if (dir == -Vector3.forward)
        {
            side         = 3;
            oppositeSide = 1;
        }
        if (dir == -Vector3.up)
        {
            side         = 5;
            oppositeSide = 0;
        }
        if (dir == Vector3.right)
        {
            side         = 4;
            oppositeSide = 2;
        }

        if (dir == -Vector3.right)
        {
            side         = 2;
            oppositeSide = 4;
        }

        GameObject newBlock = Instantiate(bluePrints[selection], spawnPos, Quaternion.LookRotation(dir),
                                          p_hitInfo.transform.parent.transform.parent.transform);
        GameObject oldBlock = p_hitInfo.collider.gameObject;


        unit.cubeArray.Add(newBlock);
        CompCube block          = p_hitInfo.collider.gameObject.GetComponent(typeof(CompCube)) as CompCube;
        CompCube newBlockAsComp = newBlock.GetComponentInChildren(typeof(CompCube)) as CompCube;

        block.cubes[side] = newBlock;
        newBlockAsComp.cubes[oppositeSide] = block;
        Debug.Log("Block was placed on sides" + side + " and " + oppositeSide);
        //Debug.Log("Units nr of blocks: " + unit.cubeArray.Length.ToString());
    }
Пример #2
0
 public void SetMotherCube(CompCube p_motherCube)
 {
     this.motherCube = p_motherCube;
 }
Пример #3
0
    //Gamla PlaceBlock där vi upptäckte arrayproblemet.
    public void OldPlaceBlock(RaycastHit p_hitInfo)
    {
        Vector3 dir = p_hitInfo.normal;
        //Vector3 offset = p_hitInfo.point - p_hitInfo.transform.position;
        Vector3 spawnPos = p_hitInfo.transform.position + (Vector3.Scale(p_hitInfo.collider.bounds.extents, dir));// + offset;

        //kolla vilken sida; skulle vara najs med en switch men kommer inte på hur :p OOOOOOOOOOOOOOOOOOOOOOO
        //så det blir stupid solution
        int side         = 0;
        int oppositeSide = 5;

        if (dir == Vector3.forward)
        {
            side         = 1;
            oppositeSide = 3;
        }
        if (dir == -Vector3.forward)
        {
            side         = 3;
            oppositeSide = 1;
        }
        if (dir == -Vector3.up)
        {
            side         = 5;
            oppositeSide = 0;
        }
        if (dir == Vector3.right)
        {
            side         = 4;
            oppositeSide = 2;
        }

        if (dir == -Vector3.right)
        {
            side         = 2;
            oppositeSide = 4;
        }

        //Något slags fuckery här, med att den nya kubens array inte representeras korrekt i inspektorn? visar inte att den har sin förälder i arrayen.
        GameObject newBlock = Instantiate(bluePrints[selection], spawnPos, Quaternion.LookRotation(dir),
                                          p_hitInfo.transform.parent.transform.parent.transform);
        GameObject oldBlock = p_hitInfo.collider.transform.parent.gameObject;

        unit.cubeArray.Add(newBlock);
        CompCube block          = p_hitInfo.collider.gameObject.GetComponentInParent(typeof(CompCube)) as CompCube;
        CompCube newBlockAsComp = newBlock.GetComponent(typeof(CompCube)) as CompCube;

        block.cubes[side] = newBlock;
        newBlockAsComp.cubes[oppositeSide] = oldBlock;
        //Debug.Log("Is block in sides? newblock: " + newBlockAsComp.cubes[oppositeSide] + " oldblock " + block.cubes[side]);
        for (int i = 0; i < (p_hitInfo.transform.gameObject.GetComponentInParent(typeof(CompCube)) as CompCube).cubes.Length; i++)
        {
            Debug.Log("träffade kubens cubes[" + i + "] = " + (p_hitInfo.transform.gameObject.GetComponentInParent(typeof(CompCube)) as CompCube).cubes[i]);
        }

        //om sidan är tagen redan hos vårat träffade object (typ att man klickar GENOM saker!?) så får vi itne spawna något nytt.
        if ((p_hitInfo.transform.gameObject.GetComponentInParent(typeof(CompCube)) as CompCube).cubes[side] != null)
        {
            Debug.Log("Hände det?");
            return;
        }

        //GameObject newBlock = Instantiate(bluePrints[selection], spawnPos, Quaternion.LookRotation(dir), p_hitInfo.transform.parent.transform.parent.transform);
        //GameObject oldBlock = p_hitInfo.transform.parent.gameObject;


        //unit.cubeArray.Add(newBlock);

        //CompCube block = p_hitInfo.transform.gameObject.GetComponentInParent(typeof(CompCube)) as CompCube;
        //block.cubes[side] = newBlock;
        Debug.Log("namn på träff" + p_hitInfo.transform.name);
        (p_hitInfo.transform.gameObject.GetComponentInParent(typeof(CompCube)) as CompCube).cubes[side] = newBlock;


        //Debug.Log("oldBlock: " + oldBlock.name);
        (newBlock.GetComponentInParent(typeof(CompCube)) as CompCube).cubes[oppositeSide] = oldBlock;
        // Debug.Log("newBlock name" + newBlock.name);
        newBlock.GetComponentInChildren <Renderer>().material.color = Color.blue;



        //newBlockAsComp.cubes[oppositeSide] = oldBlock;

        //Debug.Log("Block was placed on sides" + side + " and " + oppositeSide);
        //Debug.Log("newBlocks cubes[5]" + (newBlock.GetComponentInParent(typeof(CompCube)) as CompCube).cubes[oppositeSide])
        //Debug.Log("Units nr of blocks: " + unit.cubeArray.Length.ToString());


        //Testar att referera till cuben som nite syns i arrayen.
        //(newBlock.GetComponentInParent(typeof(CompCube)) as CompCube).cubes[oppositeSide].transform.Translate(new Vector3(2, 2, 2));
    }