LeviLamina
Loading...
Searching...
No Matches
CircuitSceneGraph.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/world/level/BlockPos.h"
5
6// auto generated inclusion list
7#include "mc/world/redstone/circuit/components/CircuitComponentType.h"
8
9// auto generated forward declare list
10// clang-format off
12class BlockPos;
13class BlockSource;
14class ChunkPos;
17// clang-format on
18
20public:
21 // CircuitSceneGraph inner types declare
22 // clang-format off
23 class PendingEntry;
24 // clang-format on
25
26 // CircuitSceneGraph inner types define
27 using ComponentMap = ::std::unordered_map<::BlockPos, ::std::unique_ptr<::BaseCircuitComponent>>;
28
29 using ComponentsPerPosMap = ::std::unordered_map<::BlockPos, ::CircuitComponentList>;
30
31 using ComponentsPerChunkMap = ::std::unordered_map<::BlockPos, ::ChunkCircuitComponentList>;
32
34 public:
35 // member variables
36 // NOLINTBEGIN
37 ::ll::TypedStorage<8, 8, ::BaseCircuitComponent*> mRawComponentPtr;
38 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BaseCircuitComponent>> mComponent;
39 ::ll::TypedStorage<4, 12, ::BlockPos> mPos;
40 // NOLINTEND
41
42 public:
43 // member functions
44 // NOLINTBEGIN
45 MCAPI ~PendingEntry();
46 // NOLINTEND
47
48 public:
49 // destructor thunk
50 // NOLINTBEGIN
51 MCFOLD void $dtor();
52 // NOLINTEND
53 };
54
55public:
56 // member variables
57 // NOLINTBEGIN
58 ComponentMap mAllComponents;
59 ComponentsPerChunkMap mActiveComponentsPerChunk;
60 ComponentsPerPosMap mPowerAssociationMap;
61 ::std::unordered_map<::BlockPos, ::CircuitSceneGraph::PendingEntry> mPendingAdds;
62 ::std::unordered_map<::BlockPos, ::CircuitSceneGraph::PendingEntry> mPendingUpdates;
63 ::std::unordered_map<::BlockPos, ::std::vector<::BlockPos>> mComponentsToReEvaluate;
64 ::std::vector<::CircuitSceneGraph::PendingEntry> mPendingRemoves;
65 // NOLINTEND
66
67public:
68 // member functions
69 // NOLINTBEGIN
70 MCAPI CircuitSceneGraph();
71
72 MCAPI void add(::BlockPos const& pos, ::std::unique_ptr<::BaseCircuitComponent> component);
73
74 MCAPI void findRelationships(::BlockPos const& pos, ::BaseCircuitComponent* producerTarget, ::BlockSource* region);
75
76 MCAPI ::BaseCircuitComponent* getComponent(::BlockPos const& pos, ::CircuitComponentType typeID);
77
78 MCAPI void invalidatePos(::BlockPos const& pos);
79
80 MCAPI void preSetupPoweredBlocks(::ChunkPos const& chunkPos);
81
82 MCAPI void processPendingAdds();
83
84 MCAPI void removeComponent(::BlockPos const& pos);
85
86 MCAPI void removeStaleRelationships();
87
88 MCAPI void scheduleRelationshipUpdate(::BlockPos const& pos, ::BaseCircuitComponent* component);
89
90 MCAPI void update(::BlockSource* region);
91
92 MCAPI ~CircuitSceneGraph();
93 // NOLINTEND
94
95public:
96 // constructor thunks
97 // NOLINTBEGIN
98 MCAPI void* $ctor();
99 // NOLINTEND
100
101public:
102 // destructor thunk
103 // NOLINTBEGIN
104 MCAPI void $dtor();
105 // NOLINTEND
106};
Definition BaseCircuitComponent.h:20
Definition BlockPos.h:18
Definition BlockSource.h:67
Definition ChunkPos.h:11
Definition CircuitComponentList.h:12
Definition CircuitSceneGraph.h:33
Definition CircuitSceneGraph.h:19
Definition ChunkCircuitComponentList.h:14