LDraw.org Discussion Forums

Full Version: BrickSmith and Catalina
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi Y'all,

I have been totally AWOL from the LDraw community and Bricksmith dev, but I wanted to poke my head in and let people know where I was at with Bricksmith.  Allen has not had time to work on the project in quite a while and gave me carte blanche to maintain it, but I too have been really strapped for time.

The problem we have with BrickSmith is that Apple's platform SDK is an evolving target, as are the dev tools, and at this point we've picked up some serious bugs and problems due to not keeping up.  Here's the ones I am aware of and their status:

- No 3-d drawing at all - this can be fixed by setting a clear color to an overlay view, as (I think Travis) observed.  This happens when compiling on new tools.

- Incorrect scrolling and zooming, and blocky, pixelated bricks when zooming.  This is due to some change in how the scroll and clip views interact - the UI framework is literally "zooming" the GL surface instead of telling us we should draw bigger, resulting in blocky pixels.  This happens when compiling on new tools.

- Very slow search times in the part browser. Something changed in the perf of the regex thingie Allen was using; I have a rewrite of this that fixes this.  This is OS specific, not tool-chain specific as far as I can tell.

- Code signing/notarization issues - past versions of Bricksmith were not signed and notarized to be compliant with the increased security checks in Catalina and late Mojave.  This is OS specific, although there are work-arounds you can do on your machine to turn off the security squawks.  On the very newest X-code, code signing seems to be entirely broken and I can't even get a clean build without command-line hacking; as best as I can tell the way lsynth is packed into the app package now violates some new code signing rule.

I have not seen Z-thrash artifacts in my own use of the code.

The thing that drove me to re-examine some of this (instead of procrastinating due to the hurricane of work from my day job) is that I am upgrading my laptop, and in doing so, I will be giving away my last machine that was capable of compiling a shippable Bricksmith (by compiling on the old tool chain).

So my goal over the next week is to do one of either:
- Getting the current code into good enough shape that a clean build off of source with the latest Apple tools with the latest Apple X-Code actually works or
- Cutting a binary from my old machine that (somehow) runs on Catalina, so people can at least use the app until we can get a current compile working.

Edit: it looks like document opening is broken on Catalina (but not Mojave) when a build from legacy dev-tools is used.  This is not a problem on builds from current tools, so I think I have to fix the clipping/zooming issues.  It also looks like a side-effect of the clip-zoom issues is that a bunch of things in the culling/LOD system are broken, resulting in lousy performance and sometimes entirely missing buildings - this wasn't obvious for small models but is for large ones.

If anyone else is/has played with the code and has ideas or fixes for some of the issues or experience with Mac sw development, please ping me - dealing with crazy AppKit regressions is definitely not my area of expertise.

I am sitting on one _feature_ that I'd love to ship when we can get the code cleaned up: Bricksmith is very grid-focused - you can really rapidly build something up if it's orthogonal (think 80s style lego town models).  But this strength has always been a weakness when you get off the grid.  For example, the dentist chair from Assembly Square is murder to model in Bricksmith because it can and should be posed at non-right angles.

In the latest code, there is a new mode where rotations and nudges for a part work _relative to its current orientation_.  This means you can rotate a part 45 degrees and then nudge it along its new axis.  If a plate is hanging off of a bar (by a clip) at an odd angle, building off that plate is still "in grid" and just works.

I've been testing the feature by modeling the Corner Garage - the entire front facade is at 45 degrees, with stuff hanging off of it - it's as easy to model as the rest of the building with the new change.  

Hi Y'all,

Quick update - I finally took my brain out of neutral and realized that I could build BrickSmith on a modern machine by just grabbing an SDK from an old machine; a friend of mine had the El Capitan SDK, which is old enough. I'm now testing a build that I hope might be a viable full release, the first done not-by-Allen. It appears to work correctly on Mojave and Catalina, is being built against an old enough SDK that it might plausibly run on older OSes, and would get out some bug fixes I've been sitting on.

Please message me if you'd like to try a build as an early tester.

Hi Ben,
I might be able to help you with testing in my spare times.