Testing my constructive solid geometry implementation &proctor
I have been working on my CAD environment + spreadsheet app &proctor
I moved all user interaction type of code (context sensitive UI, element picking, line drawing,...) from an event driven system to a polling system. The code is much less and a lot easier to read and work on.
Hidden line generation was surprisingly hard to get fast enough (rendering alone would be easy, but I need the actual line information for future PDF generation).
A little bit late, but my wheel-reinvention-jam project is coming along well. &bewehr
Complete IFC (3d building file format used in the AEC industry) file reader generated from its EXPRESS description file.
I am able to render walls and slabs from the file, but not at the right location yet.
&bewehr
I didn't end up with something visual or interactive, but it was very insightful.
I was trying to make a CAD app and use metaprogramming for it as much as possible.
What I did:
1. Day: Trying out metadesk and think about how it might help with me creating an app. I realised it is good for describing data, but not so good in describing a program.
2. Day: Trying out sokol_gfx and sokol_app. Also wrote a metaprogram that just takes a DATA_main.c file (in which I write the app in) and turns it into a GEND_main.c file (GEND=generated). I did some keyword replacement just so the metaprogram does something.
3. Day: Started writing the app. I decided that I want a rectangle-struct for basically everything on the screen (backgrounds, buttons, text, ...). I didn't end up writing much code for it though.
4. Day: Now that everything is just this rectangle-object I can describe most of the program in a tree structure. So I did create a META_DATA block (it is a variadic macro so my IDE wouldn't mark it as syntax errors) that holds metadesk data describing rectangles (and other stuff). The metaprogram reads that block and adds the rectangle creation code to a location I marked in the code.
Conclusion: I now have a nice setup for adding arbitrary data in my program and generate code from it.
Running a metaprogram on your code, even when it doesn't do much, can help thinking on a higher level and I think it helps making your code shorter and focus on more relevant things.
&bewehr
I made a ton of progress on this. Interaction between spreadsheet and model elements works now. After some refactoring, I will add more CAD elements and spreadsheet formulas. After that I will implement the ability to create your own (compound) CAD elements, model-views, sheets/paper layouts and probably a scripting language + editor. &proctor
I made a window appear with my programming language - the code is currently a mess, because there is still a lot to implement.
Procedural generation experiments. The whole scene is about 400 lines of script. &pgfx-citygame
I worked on my city building game. Buildings, roads, everything is procedurally generated in my own scripting language. &pgfx-citygame
I rewrote the spreadsheet and the parameter view + tons of other bug fixes and simplifications ๐ &proctor
Finished with a simple viewer that updates when you change the input file and shows how the structure is deformed under the load. Here is my submission post: https://handmade.network/forums/jam/t/8121-structure_analysis_program#25258
I made a GUI (but it's more a mock-up than anything else at this point).
Still no UI, but I have implemented the hardest parts of the structural analysis (step 1+2).
Unfortunately nothing visual yet. But model parsing works now and today I learned the essentials of the FEM of a truss ๐
There is an upcoming "Pitch-Your-Game"-event in Austria and I want to submit my citybuilding game. That made me work on actual content and visuals. I hope I have time to improve the buildings a lot more until then.
I worked on the material system and on procedurally generated trees. I am slowly reaching the content-creation-phase of this game, rather than experimenting/thinking about technical stuff. &pgfx-citygame
Did some work on the terrain system of my city-builder-game. The terrain is polygon based. This makes it a little bit tricky to place features like mountains or rivers, but it has the advantage that it can have tunnels, vertical or overhanging elements without problems (in comparison to height-map-terrains). &pgfx-citygame
I made progress on the "CAD view" and on the "parameter view". The interactions between all the UI elements is not done yet (which is the most important part of this project), but I think I figured it out how to do them. The whole UI / interaction system (which is event/callback based, retained mode) is not very elegant, but it does its job.
There are a lot of design decisions to make, for example: Which panel should handle which key press? Is the user allowed to do stuff in the spreadsheet during a modelling command? ... Figuring those out is a lot more work than I anticipated at the start of this project.
A lot of bugs are coming up. I need to implement inspection tools and visualisations.
I also figured out how to do icons in Inkscape. I work on icons whenever I get too frustrated with programming ๐ &proctor
Still can't do anything useful with it yet (other than some very basic spreadsheet things) but I am making progress! I worked on the palette-manager, menus, CAD line rendering and the interaction-system that glues all the elements of this program together.
Next on my ToDo list is basic CAD elements and getting parameters of selected spreadsheet cells or CAD elements into the parameter view to the right.
I decided to call this project "Proctor" for now (it has a good ring to it and reminds me of "Blender" which is a huge inspiration for this). &proctor
This is a lot of work, but "Little strokes fell big oaks" as they say ๐ &proctor
A side project I am working on. A combination of the two most important engineering tools: CAD and spreadsheets. The idea is you can add / change / calculate on CAD data via a spreadsheet, but also use it for making custom UIs and tools. &proctor
The main thing I wanted to have in my programming language works now ๐
You can have statement- or expression-blocks of arbitrary code/data and the interpreter that you must define somewhere in the code turns it into AST-node(s) at compile time.
I am interpreting the mixin with a foreign function right now because the language can't do parsing very well yet. I am planning to implement pattern matching that should simplify parsing quite a lot.
I was to lazy to actually parse the Morsecode so I just return an integer-AST-node ๐
My procedural mesh generator has now syntax highlighting and a small "live-documentation". ๐ Right now, for the syntax highlighting, the editor requests tokens from the user. I am planing to have the editor request a block-hierarchy from the user (in this case of a lisp-like language it would be just: list -> tokens) which should make the implementation of a more useful documentation and autocompletion much easier ๐ After the initial request for the whole file it can just request new blocks for the block the cursor is currently in, which reduces the amount of parsing needed. &pgfx-citygame
My procedural mesh generator has now syntax highlighting and a small "live-documentation". ๐ Right now, for the syntax highlighting, the editor requests tokens from the user. I am planing to have the editor request a block-hierarchy from the user (in this case of a lisp-like language it would be just: list -> tokens) which should make the implementation of a more useful documentation and autocompletion much easier ๐ After the initial request for the whole file it can just request new blocks for the block the cursor is currently in, which reduces the amount of parsing needed. EDIT: Oh no, the GIF is broken ๐ญ
I had a basic FFI-generator and I made it more general-purpose this weekend. It parses all functions and structs in a C-codebase and you can then insert or overwrite code based on them. This is really useful for generating dispatch-functions, documentations, instrospection functions and of course FFIs.
Made a simple live-coding environment for procedurally generating meshes. &pgfx-citygame
I reached the "bytecode-execution"-phase with my programming language ๐
This is my new attempt at making my own general purpose programming language. This time I made an application that compiles the code while I am typing it. It makes it easy to debug compiler error messages and the AST of my code.
Yesterday I implemented basic glTF model loading with cgltf. Today I spent the whole day implementing /debugging shadow mapping in OpenGL. I wanna do cascading shadow maps next. &pgfx-citygame
Made some text based UI. It does autocompletion and you can easily create new macros.