Esempio n. 1
0
        public void RegenCircuitMesh(VoxelCircuit circuit)
        {
            networkStates = new Dictionary <int, byte>();
            circuitMesh   = new MeshData(24, 36, false);

            MeshData singleVoxelMesh = getsimpleVoxelMesh();

            wireMeshesRefs = new Dictionary <int, MeshRef>();

            Vec3f rotate = new Vec3f(0, 0, 0);

            if (facing != null && orientation != null)
            {
                rotate = SignalsUtils.FacingToRotation(orientation, facing);
            }

            int j = 0;

            foreach (VoxelWire net in circuit.wiring.networks.Values)
            {
                tmpMesh = GetNetworkMesh(net, singleVoxelMesh);
                tmpMesh.Rotate(new Vec3f(0.5f, 0.5f, 0.5f), rotate.X * GameMath.PI / 180, rotate.Y * GameMath.PI / 180, rotate.Z * GameMath.PI / 180);
                wireMeshesRefs[net.id] = capi.Render.UploadMesh(tmpMesh);
                j++;
            }

            foreach (CircuitComponent comp in circuit.components)
            {
                circuitMesh.AddMeshData(comp.getMesh(capi));
            }


            circuitMesh.Rotate(new Vec3f(0.5f, 0.5f, 0.5f), rotate.X * GameMath.PI / 180, rotate.Y * GameMath.PI / 180, rotate.Z * GameMath.PI / 180);
            circuitMeshRef = capi.Render.UploadMesh(circuitMesh);
        }
Esempio n. 2
0
        public override void GetHeldItemInfo(ItemSlot inSlot, StringBuilder dsc, IWorldAccessor world, bool withDebugInfo)
        {
            base.GetHeldItemInfo(inSlot, dsc, world, withDebugInfo);
            ITreeAttribute tree = inSlot.Itemstack.Attributes;

            if (tree.HasAttribute("circuit"))
            {
                VoxelCircuit.GetCircuitInfo(dsc, tree.GetTreeAttribute("circuit"));
            }
        }
Esempio n. 3
0
        internal static MeshData CreateMeshForItem(ICoreClientAPI capi, ITreeAttribute tree)
        {
            VoxelCircuit circuit = new VoxelCircuit(16, 16, 16, null);

            circuit.FromTreeAttributes(tree.GetTreeAttribute("circuit"), capi.World);
            CircuitBoardRenderer renderer = new CircuitBoardRenderer(null, BlockFacing.DOWN, BlockFacing.NORTH, capi);

            renderer.RegenCircuitMesh(circuit);
            return(renderer.GetCircuitMeshForItem(circuit));
        }
Esempio n. 4
0
        public MeshData GetCircuitMeshForItem(VoxelCircuit circuit)
        {
            MeshData singleVoxelMesh = getsimpleVoxelMesh();
            MeshData outMesh         = new MeshData(24, 36, false);

            Vec3f rotate = new Vec3f(0, 0, 0);

            if (facing != null && orientation != null)
            {
                rotate = SignalsUtils.FacingToRotation(orientation, facing);
            }

            foreach (VoxelWire net in circuit.wiring.networks.Values)
            {
                outMesh.AddMeshData(GetNetworkMesh(net, singleVoxelMesh));
            }
            foreach (CircuitComponent comp in circuit.components)
            {
                outMesh.AddMeshData(comp.getMesh(capi));
            }
            outMesh.Rotate(new Vec3f(0.5f, 0.5f, 0.5f), rotate.X * GameMath.PI / 180, rotate.Y * GameMath.PI / 180, rotate.Z * GameMath.PI / 180);
            return(outMesh);
        }