Bicameral Engine
GPU-resident engine for a magic-research open-world game
Loading...
Searching...
No Matches
lab_box.cpp File Reference
#include "sim/lab_box.h"
#include <algorithm>
#include <array>
#include <cstring>
#include <format>
#include <type_traits>
#include "sim/multires_nest_internal.h"
Include dependency graph for lab_box.cpp:

Go to the source code of this file.

Namespaces

namespace  bicameral
namespace  bicameral::sim
namespace  bicameral::sim::anonymous_namespace{lab_box.cpp}

Functions

void bicameral::sim::anonymous_namespace{lab_box.cpp}::SetPayload (Command &command, uint32_t word, uint32_t value)
Command bicameral::sim::anonymous_namespace{lab_box.cpp}::MakeLabCommand (uint64_t targetTick, uint32_t sequence, uint32_t type, LabCellPosition cell, uint32_t temperatureMilliKelvin)
template<typename T>
bool bicameral::sim::anonymous_namespace{lab_box.cpp}::SameBytes (const std::vector< T > &a, const std::vector< T > &b)
template<typename T>
void bicameral::sim::anonymous_namespace{lab_box.cpp}::Append (std::vector< std::byte > &bytes, const T &value)
template<typename T>
bool bicameral::sim::anonymous_namespace{lab_box.cpp}::Take (std::span< const std::byte > &bytes, T &value)
Command bicameral::sim::MakeLabFillCommand (uint64_t targetTick, uint32_t sequence, LabCellPosition cell, std::span< const SpeciesAmount > contents, uint32_t temperatureMilliKelvin)
Command bicameral::sim::MakeLabTemperatureCommand (uint64_t targetTick, uint32_t sequence, LabCellPosition cell, uint32_t temperatureMilliKelvin)
lab::LabCommand bicameral::sim::ToLabCommand (const Command &command)
std::vector< LabMaterial > bicameral::sim::MakeLabMaterials (const BakedReactionTable &table)
MultiresCapacity bicameral::sim::LabBoxCapacity (const BakedReactionTable &table)
MultiresNest bicameral::sim::MakeLabBoxNest (const BakedReactionTable &table)
RxCell bicameral::sim::LabBoxCell (const MultiresNest &nest, uint32_t index)
uint32_t bicameral::sim::ApplyLabCommands (MultiresNest &nest, const BakedReactionTable &table, std::span< const Command > commands)
void bicameral::sim::StepLabBox (MultiresNest &nest, const BakedReactionTable &table, uint64_t tick, std::span< const Command > commands)
std::optional< LabMismatch > bicameral::sim::FindLabMismatch (const MultiresNest &cpu, const MultiresNest &gpu, uint64_t tick)
std::vector< std::byte > bicameral::sim::SerializeLabRecording (const LabRecording &recording)
std::expected< LabRecording, std::string > bicameral::sim::ParseLabRecording (std::span< const std::byte > bytes)

Variables

constexpr uint64_t bicameral::sim::anonymous_namespace{lab_box.cpp}::AIR_OXYGEN_MICROMOLES = 1063800
constexpr uint64_t bicameral::sim::anonymous_namespace{lab_box.cpp}::AIR_NITROGEN_MICROMOLES = 4014200
constexpr uint64_t bicameral::sim::anonymous_namespace{lab_box.cpp}::AIR_TOTAL_MICROMOLES = AIR_OXYGEN_MICROMOLES + AIR_NITROGEN_MICROMOLES
constexpr uint64_t bicameral::sim::anonymous_namespace{lab_box.cpp}::WOOD_CELLULOSE_MICROMOLES = 38600000
constexpr uint64_t bicameral::sim::anonymous_namespace{lab_box.cpp}::PORE_OXYGEN_MICROMOLES = 983000
constexpr uint64_t bicameral::sim::anonymous_namespace{lab_box.cpp}::PORE_NITROGEN_MICROMOLES = 3697000
constexpr uint64_t bicameral::sim::anonymous_namespace{lab_box.cpp}::CHARCOAL_CARBON_MICROMOLES = 312000000
constexpr uint32_t bicameral::sim::anonymous_namespace{lab_box.cpp}::COMMAND_WORDS_PER_ENTRY = 3
constexpr std::array< char, 4 > bicameral::sim::anonymous_namespace{lab_box.cpp}::RECORDING_MAGIC = {'B', 'L', 'A', 'B'}
constexpr uint32_t bicameral::sim::anonymous_namespace{lab_box.cpp}::RECORDING_VERSION = 1