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); }
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")); } }
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)); }
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); }