Блок провода

Может кто-нибудь подсказать как сделать так чтобы блок коннектился к некоторым блокам и выглядел как провод?
 
Ставишь блок, проверяешь есть ли рядом с ним такие же блоки, в зависимости от этого устанавливаешь данному блоку метадату. В зависимости от метадаты рендеришь по-разному.
[merge_posts_bbcode]Добавлено: 15.10.2014 17:43:07[/merge_posts_bbcode]

А вообще смотри коды забора...
 
Метадата не подойдет, потому что один блок кабеля может иметь 6 соединений с соседними блоками. То есть требуется 6 двоичных разрядов.

Примеров полно - есть множество модов с открытыми/видимыми исходниками.
Хотя бы мое поделие: https://bitbucket.org/Shuleshkin/nedocomputers
 
Asd73 написал(а):
Метадата не подойдет, потому что один блок кабеля может иметь 6 соединений с соседними блоками. То есть требуется 6 двоичных разрядов.

Примеров полно - есть множество модов с открытыми/видимыми исходниками.
Хотя бы мое поделие: https://bitbucket.org/Shuleshkin/nedocomputers
Ну во-первых, может быть более 10 вариантов соединения, если только по вертикали.... а во-вторых да, точно, метадата действительно не лучший вариант...
[merge_posts_bbcode]Добавлено: 15.10.2014 18:31:35[/merge_posts_bbcode]

Oldestkon написал(а):
RenderBlocks.java
Метод renderBlockFence:
Код:
 boolean flag3 = par1BlockFence.canConnectFenceTo(this.blockAccess, par2 - 1, par3, par4);
 boolean flag4 = par1BlockFence.canConnectFenceTo(this.blockAccess, par2 + 1, par3, par4);
 boolean flag5 = par1BlockFence.canConnectFenceTo(this.blockAccess, par2, par3, par4 - 1);
 boolean flag6 = par1BlockFence.canConnectFenceTo(this.blockAccess, par2, par3, par4 + 1);

4 флага на 4 стороны - проверяют соединены ли с тех сторон с другим забором. Дальше рендер:
Код:
        float f4 = flag3 ? 0.0F : f;
        float f5 = flag4 ? 1.0F : f1;
        float f6 = flag5 ? 0.0F : f;
        float f7 = flag6 ? 1.0F : f1;

        if (flag1)
        {
            this.setRenderBounds((double)f4, (double)f2, (double)f, (double)f5, (double)f3, (double)f1);
            this.renderStandardBlock(par1BlockFence, par2, par3, par4);
            flag = true;
        }

        if (flag2)
        {
            this.setRenderBounds((double)f, (double)f2, (double)f6, (double)f1, (double)f3, (double)f7);
            this.renderStandardBlock(par1BlockFence, par2, par3, par4);
            flag = true;
        }

        f2 = 0.375F;
        f3 = 0.5625F;

        if (flag1)
        {
            this.setRenderBounds((double)f4, (double)f2, (double)f, (double)f5, (double)f3, (double)f1);
            this.renderStandardBlock(par1BlockFence, par2, par3, par4);
            flag = true;
        }

        if (flag2)
        {
            this.setRenderBounds((double)f, (double)f2, (double)f6, (double)f1, (double)f3, (double)f7);
            this.renderStandardBlock(par1BlockFence, par2, par3, par4);
            flag = true;
        }

Где как раз используются данные флаги и рендерятся остальные части забора.
 
Да, я непонятно выразился. Всего соединений 6, а вариантов соединений 2[sup]6[/sup]=64. Метадата для кабеля не подходит в принципе, потому что метадата у блока может быть от 0 до 15.
 
Блин, дали вам Билдкрафт, Форестри, Рейлкрафт - нет, не хочу читать исходнек, хочу сам писать.
 
Назад
Сверху