Jan 13, 2023 - IA - Simulation Controls - Top Toolbar - Play/Pause - Reset - Speed selection - Timeline scrubber - Left Toolbar - page selection - Environment - Animats - Population - Physics - Environment - sunlight rate - min pop - Cladogram - Animats - List - Animat Details - Genome text/graph - Current state - Energy - - Geneology - Graph of ancestors and descendents for current animat Dec 21, 2023 - Project structure to have a C++ library depended on by multiple projects - Folder/group at the top level contains all the C++ and a module.modulemap file that names and links all the C++ headers. - Each project or library that depends on it needs to set the Search Paths/Header Search Path to the top level folder containing the C++ headers, e.g., "../Simulation" - Every *project* needs to set the Swift Compiler - Language/C++ Interop to C++ instead of Objective-C *and* set the Target's interop to C++. - Using this, have a single swift project wrapping the C++ library Yesod Library - cmake builds crossplatform framework / library - as dylib/framewwork Current state: - can't call a simple C++ function from the swift app - Can't call a swift function in a framework from the swift app - https://www.swift.org/documentation/cxx-interop/status/ Want: - C++ library with dependencies on Jolt and absl - call from swift, minimal interface: - setup(), update(), registerDrawBox(void*()) (swift calls C++) - drawBox (C++ calls swift) - Alternative: (easier?) - setup, update, getBoxes()->std::vector<double> - C++ dylib / framework Option - Direct Inclusion # Self Collisions CollisionTable allows disabling collisions - one CT per animat - Each segment has a different subgroup ID - DisableCollision between parent and child segments A-> B -> C A collides with C B collides with neither A B C A B N C Y N ---------------------------- Node - Segment edge