19class CircuitSceneGraph {
31 ::ll::TypedStorage<8, 8, ::BaseCircuitComponent*> mRawComponentPtr;
32 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BaseCircuitComponent>> mComponent;
33 ::ll::TypedStorage<4, 12, ::BlockPos> mPos;
37 using ComponentMap = ::std::unordered_map<::BlockPos, ::std::unique_ptr<::BaseCircuitComponent>>;
39 using ComponentsPerChunkMap = ::std::unordered_map<::BlockPos, ::ChunkCircuitComponentList>;
41 using ComponentsPerPosMap = ::std::unordered_map<::BlockPos, ::CircuitComponentList>;
46 ComponentMap mAllComponents;
47 ComponentsPerChunkMap mActiveComponentsPerChunk;
48 ComponentsPerPosMap mPowerAssociationMap;
49 ::std::unordered_map<::BlockPos, ::CircuitSceneGraph::PendingEntry> mPendingAdds;
50 ::std::unordered_map<::BlockPos, ::CircuitSceneGraph::PendingEntry> mPendingUpdates;
51 ::std::unordered_map<::BlockPos, ::std::vector<::BlockPos>> mComponentsToReEvaluate;
52 ::std::vector<::CircuitSceneGraph::PendingEntry> mPendingRemoves;
58 MCAPI CircuitSceneGraph();
60 MCAPI
void add(
::BlockPos const& pos, ::std::unique_ptr<::BaseCircuitComponent> component);
66 MCAPI ::BaseCircuitComponent* getBaseComponent(
::BlockPos const& pos);
68 MCAPI ::BaseCircuitComponent* getComponent(
::BlockPos const& pos, ::CircuitComponentType typeID);
70 MCAPI ::BaseCircuitComponent* getFromPendingAdd(
::BlockPos const& pos, ::CircuitComponentType typeID);
72 MCAPI
void invalidatePos(
::BlockPos const& pos);
74 MCAPI
void preSetupPoweredBlocks(
::ChunkPos const& chunkPos);
76 MCAPI
void processPendingAdds();
80 MCAPI
void removeComponent(
::BlockPos const& pos);
82 MCAPI
void removeStaleRelationships();
86 MCAPI ~CircuitSceneGraph();
Definition CircuitSceneGraph.h:27