// This Header is auto generated by BDSLiteLoader Toolchain
#pragma once
#define AUTO_GENERATED
#include "../Global.h"

#define BEFORE_EXTRA

#undef BEFORE_EXTRA

class CircuitSceneGraph {

#define AFTER_EXTRA

#undef AFTER_EXTRA
#ifndef DISABLE_CONSTRUCTOR_PREVENTION_CIRCUITSCENEGRAPH
public:
    class CircuitSceneGraph& operator=(class CircuitSceneGraph const &) = delete;
    CircuitSceneGraph(class CircuitSceneGraph const &) = delete;
    CircuitSceneGraph() = delete;
#endif

public:
#ifdef ENABLE_VIRTUAL_FAKESYMBOL_CIRCUITSCENEGRAPH
#endif
    MCAPI void add(class BlockPos const &, std::unique_ptr<class BaseCircuitComponent>);
    MCAPI class BaseCircuitComponent * addIfPoweredBlockAt(class BlockSource &, class BlockPos const &);
    MCAPI void addPositionToReEvaluate(class ChunkPos const &, class BlockPos const &);
    MCAPI class BaseCircuitComponent * getBaseComponent(class BlockPos const &);
    MCAPI class BaseCircuitComponent * getComponent(class BlockPos const &, unsigned __int64);
    MCAPI class BaseCircuitComponent * getFromPendingAdd(class BlockPos const &, unsigned __int64);
    MCAPI class BaseCircuitComponent * getFromPendingAdd(class BlockPos const &);
    MCAPI void invalidatePos(class BlockPos const &);
    MCAPI void preSetupPoweredBlocks(class ChunkPos const &);
    MCAPI void remove(class BlockPos const &, class BaseCircuitComponent *);
    MCAPI ~CircuitSceneGraph();

//private:
    MCAPI void findRelationships(class BlockPos const &, class BaseCircuitComponent *, class BlockSource *);
    MCAPI void processPendingAdds();
    MCAPI void processPendingUpdates(class BlockSource *);
    MCAPI void removeComponent(class BlockPos const &);
    MCAPI void removeStaleRelationships();
    MCAPI void scheduleRelationshipUpdate(class BlockPos const &, class BaseCircuitComponent *);

private:

};