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