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