Exemplo n.º 1
0
    public GameObject getGameObject()
    {
        voxelGroup = new VoxelGroup(texture);
        GameObject rootObject = new GameObject("SpriteObject");
        //rootObject.AddComponent<Rigidbody>();
        MeshCollider meshCollider = rootObject.AddComponent <MeshCollider>();

        meshCollider.convex = true;
        Material material = new Material(GameManager.getGameManager().itemMaterial);

        material.mainTexture = texture;
        Mesh colliderMesh            = new Mesh();
        List <CombineInstance> meshs = new List <CombineInstance>();

        for (int _d = 0; _d < 6; _d++)
        {
            Direction direction = (Direction)_d;
            prepareMesh(direction);
            Mesh mesh = getItemMesh(direction);
            if (mesh.vertices.Length > 0)
            {
                GameObject o = new GameObject(direction + "");
                o.AddComponent <MeshFilter>().sharedMesh       = mesh;
                o.AddComponent <MeshRenderer>().sharedMaterial = material;
                o.transform.SetParent(rootObject.transform);
                CombineInstance ci = new CombineInstance();
                ci.mesh      = mesh;
                ci.transform = o.transform.localToWorldMatrix;
                meshs.Add(ci);
            }
        }
        colliderMesh.CombineMeshes(meshs.ToArray());
        meshCollider.sharedMesh = colliderMesh;
        rootObject.tag          = "Item";
        return(rootObject);
    }
Exemplo n.º 2
0
    public bool isVisible(VoxelGroup group, Voxel voxel)
    {
        Vector v = voxel.getVectorInGroup();

        if (v.getX() <= 0 && direction == Direction.WEST)
        {
            return(true);
        }
        if (v.getX() >= group.width - 1 && direction == Direction.EAST)
        {
            return(true);
        }
        if (direction == Direction.DOWN && v.getY() <= 0)
        {
            return(true);
        }
        if (direction == Direction.UP && v.getY() >= group.height - 1)
        {
            return(true);
        }
        if (v.getZ() <= 0 && direction == Direction.SOUTH)
        {
            return(true);
        }
        if (v.getZ() >= group.depth - 1 && direction == Direction.NORTH)
        {
            return(true);
        }
        Voxel next = voxel.getRelative(group, direction);

        if (next == null)
        {
            return(true);
        }
        return(next.transparent);
    }
Exemplo n.º 3
0
    internal Voxel getRelative(VoxelGroup group, Direction direction)
    {
        Vector v = loc.add(direction.toVector());

        return(group.getVoxel((int)v.getX(), (int)v.getY(), (int)v.getZ()));
    }