# Solidity API

# BareComponent

Components are a key-value store from entity id to component value. They are registered in the World and register updates to their state in the World. They have an owner, who can grant write access to more addresses. (Systems that want to write to a component need to be given write access first.) Everyone has read access.

# BareComponent__NotImplemented

error BareComponent__NotImplemented()

# world

address world

Reference to the World contract this component is registered in

# entityToValue

mapping(uint256 => bytes) entityToValue

Mapping from entity id to value in this component

# id

uint256 id

Public identifier of this component

# constructor

constructor(address _world, uint256 _id) internal

# registerWorld

function registerWorld(address _world) public

Register this component in the given world.

Name Type Description
_world address Address of the World contract.

# set

function set(uint256 entity, bytes value) public

Set the given component value for the given entity. Registers the update in the World contract. Can only be called by addresses with write access to this component.

Name Type Description
entity uint256 Entity to set the value for.
value bytes Value to set for the given entity.

# remove

function remove(uint256 entity) public

Remove the given entity from this component. Registers the update in the World contract. Can only be called by addresses with write access to this component.

Name Type Description
entity uint256 Entity to remove from this component.

# has

function has(uint256 entity) public view virtual returns (bool)

Check whether the given entity has a value in this component.

Name Type Description
entity uint256 Entity to check whether it has a value in this component for.

# getRawValue

function getRawValue(uint256 entity) public view virtual returns (bytes)

Get the raw (abi-encoded) value of the given entity in this component.

Name Type Description
entity uint256 Entity to get the raw value in this component for.

# getEntities

function getEntities() public view virtual returns (uint256[])

Not implemented in BareComponent

# getEntitiesWithValue

function getEntitiesWithValue(bytes) public view virtual returns (uint256[])

Not implemented in BareComponent

# registerIndexer

function registerIndexer(address) external virtual

Not implemented in BareComponent

# _set

function _set(uint256 entity, bytes value) internal virtual

Set the given component value for the given entity. Registers the update in the World contract. Can only be called internally (by the component or contracts deriving from it), without requiring explicit write access.

Name Type Description
entity uint256 Entity to set the value for.
value bytes Value to set for the given entity.

# _remove

function _remove(uint256 entity) internal virtual

Remove the given entity from this component. Registers the update in the World contract. Can only be called internally (by the component or contracts deriving from it), without requiring explicit write access.

Name Type Description
entity uint256 Entity to remove from this component.

# Component

Components are a key-value store from entity id to component value. They are registered in the World and register updates to their state in the World. They have an owner, who can grant write access to more addresses. (Systems that want to write to a component need to be given write access first.) Everyone has read access.

# entities

contract Set entities

Set of entities with values in this component

# valueToEntities

contract MapSet valueToEntities

Reverse mapping from value to set of entities

# indexers

contract IEntityIndexer[] indexers

List of indexers to be updated when a component value changes

# constructor

constructor(address _world, uint256 _id) internal

# has

function has(uint256 entity) public view virtual returns (bool)

Check whether the given entity has a value in this component.

Name Type Description
entity uint256 Entity to check whether it has a value in this component for.

# getEntities

function getEntities() public view virtual returns (uint256[])

Get a list of all entities that have a value in this component.

# getEntitiesWithValue

function getEntitiesWithValue(bytes value) public view virtual returns (uint256[])

Get a list of all entities that have the specified value in this component.

Name Type Description
value bytes Abi-encoded value to get the list of entities with this value for.

# registerIndexer

function registerIndexer(address indexer) external virtual

Register a new indexer that gets notified when a component value is set.

Name Type Description
indexer address Address of the indexer to notify when a component value is set.

# _set

function _set(uint256 entity, bytes value) internal virtual

Set the given component value for the given entity. Registers the update in the World contract. Can only be called internally (by the component or contracts deriving from it), without requiring explicit write access.

Name Type Description
entity uint256 Entity to set the value for.
value bytes Value to set for the given entity.

# _remove

function _remove(uint256 entity) internal virtual

Remove the given entity from this component. Registers the update in the World contract. Can only be called internally (by the component or contracts deriving from it), without requiring explicit write access.

Name Type Description
entity uint256 Entity to remove from this component.

# Indexer

# entities

contract Set entities

# valueToEntities

mapping(bytes => address) valueToEntities

# entityToValue

mapping(uint256 => bytes) entityToValue

# components

contract Component[] components

# trackValueForComponent

bool[] trackValueForComponent

# constructor

constructor(contract Component[] _components, bool[] _trackValueForComponent) public

# update

function update(uint256 entity, bytes value) external

# remove

function remove(uint256 entity) external

# supportsInterface

function supportsInterface(bytes4 interfaceId) external view returns (bool)

query whether contract has registered support for given interface

Name Type Description
interfaceId bytes4 interface id
Name Type Description
[0] bool bool whether interface is supported

# getEntities

function getEntities() external view returns (uint256[])

# getEntitiesWithValue

function getEntitiesWithValue(bytes value) external view returns (uint256[])

# has

function has(uint256 entity) public view returns (bool)

# _set

function _set(uint256 entity, bytes[] newValues) internal

# Uint256Node

struct Uint256Node {
  uint256 value;
  uint256 next;
}

# freeFunction

freeFunction pointer(struct Uint256Node a) internal pure returns (bytes32 ptr)

# freeFunction

freeFunction fromPointer(bytes32 ptr) internal pure returns (struct Uint256Node a)

# freeFunction

freeFunction isPositiveFragment(struct QueryFragment fragment) internal pure returns (bool)

# freeFunction

freeFunction isNegativeFragment(struct QueryFragment fragment) internal pure returns (bool)

# freeFunction

freeFunction isSettingFragment(struct QueryFragment fragment) internal pure returns (bool)

# freeFunction

freeFunction isEntityFragment(struct QueryFragment fragment) internal pure returns (bool)

# freeFunction

freeFunction passesQueryFragment(uint256 entity, struct QueryFragment fragment) internal view returns (bool)

# freeFunction

freeFunction passesQueryFragmentProxy(uint256 entity, struct QueryFragment fragment, struct QueryFragment proxyRead) internal view returns (bool passes, bool proxyFound)

# freeFunction

freeFunction isBreakingPassState(bool passes, struct QueryFragment fragment) internal pure returns (bool)

For positive fragments (Has/HasValue) we need to find any passing entity up the proxy chain so as soon as passes is true, we can early return. For negative fragments (Not/NotValue) every entity up the proxy chain must pass, so we can early return if we find one that doesn't pass.

# QueryVars

struct QueryVars {
  LinkedList entities;
  uint256 numEntities;
  struct QueryFragment proxyRead;
  struct QueryFragment proxyExpand;
  bool initialFragment;
}

# LibQuery

# query

function query(struct QueryFragment[] fragments) internal view returns (uint256[])

Execute the given query and return a list of entity ids

Name Type Description
fragments struct QueryFragment[] List of query fragments to execute
Name Type Description
[0] uint256[] entities List of entities matching the query

# _processProxyRead

function _processProxyRead(struct QueryVars v, struct QueryFragment fragment, uint256 entity, bool passes) internal view returns (bool)

# _processProxyExpand

function _processProxyExpand(struct QueryVars v, struct QueryFragment fragment, uint256 entity, LinkedList nextEntities, uint256 nextNumEntities) internal view returns (LinkedList, uint256)

# getChildEntities

function getChildEntities(uint256 entity, contract IComponent component, uint256 depth) internal view returns (uint256[])

Recursively computes all direct and indirect child entities up to the specified depth

Name Type Description
entity uint256 Entity to get all child entities up to the specified depth
component contract IComponent Entity reference component
depth uint256 Depth up to which the recursion should be applied
Name Type Description
[0] uint256[] Set of entities that are child entities of the given entity via the given component

# getValueWithProxy

function getValueWithProxy(contract IComponent component, uint256 entity, contract IComponent proxyComponent, uint256 depth) internal view returns (bytes value, bool found)

# listToArray

function listToArray(LinkedList list, uint256 length) public pure returns (uint256[] array)

Helper function to turn a linked list into an array

# arrayToList

function arrayToList(uint256[] array) public pure returns (LinkedList list)

Helper function to turn an array into a linked list

# LibTypes

Enum of supported schema types

# SchemaValue

enum SchemaValue {
  BOOL,
  INT8,
  INT16,
  INT32,
  INT64,
  INT128,
  INT256,
  INT,
  UINT8,
  UINT16,
  UINT32,
  UINT64,
  UINT128,
  UINT256,
  BYTES,
  STRING,
  ADDRESS,
  BYTES4,
  BOOL_ARRAY,
  INT8_ARRAY,
  INT16_ARRAY,
  INT32_ARRAY,
  INT64_ARRAY,
  INT128_ARRAY,
  INT256_ARRAY,
  INT_ARRAY,
  UINT8_ARRAY,
  UINT16_ARRAY,
  UINT32_ARRAY,
  UINT64_ARRAY,
  UINT128_ARRAY,
  UINT256_ARRAY,
  BYTES_ARRAY,
  STRING_ARRAY
}

# MapSet

Key value store with uint256 key and uint256 Set value

# items

mapping(uint256 => uint256[]) items

# itemToIndex

mapping(uint256 => mapping(uint256 => uint256)) itemToIndex

# add

function add(uint256 setKey, uint256 item) public

# remove

function remove(uint256 setKey, uint256 item) public

# has

function has(uint256 setKey, uint256 item) public view returns (bool)

# getItems

function getItems(uint256 setKey) public view returns (uint256[])

# size

function size(uint256 setKey) public view returns (uint256)

# Ownable

IERC173 implementation

# constructor

constructor() public

# OwnableWritable

Ownable with authorized writers

# OwnableWritable__NotWriter

error OwnableWritable__NotWriter()

# writeAccess

function writeAccess(address operator) public view virtual returns (bool)

Whether given operator has write access

# onlyWriter

modifier onlyWriter()

Revert if caller does not have write access to this component

# authorizeWriter

function authorizeWriter(address writer) public virtual

Grant write access to the given address. Can only be called by the owner.

Name Type Description
writer address Address to grant write access to.

# unauthorizeWriter

function unauthorizeWriter(address writer) public virtual

Revoke write access from the given address. Can only be called by the owner.

Name Type Description
writer address Address to revoke write access.

# OwnableWritableStorage

# Layout

struct Layout {
  mapping(address => bool) writeAccess;
}

# STORAGE_SLOT

bytes32 STORAGE_SLOT

# layout

function layout() internal pure returns (struct OwnableWritableStorage.Layout l)

# PayableSystem

System base contract

# components

contract IUint256Component components

# world

contract IWorld world

# constructor

constructor(contract IWorld _world, address _components) internal

# Set

Set of unique uint256

# items

uint256[] items

# itemToIndex

mapping(uint256 => uint256) itemToIndex

# add

function add(uint256 item) public

# remove

function remove(uint256 item) public

# getIndex

function getIndex(uint256 item) public view returns (bool, uint256)

# has

function has(uint256 item) public view returns (bool)

# getItems

function getItems() public view returns (uint256[])

# size

function size() public view returns (uint256)

# System

System base contract

# components

contract IUint256Component components

# world

contract IWorld world

# constructor

constructor(contract IWorld _world, address _components) internal

# SystemStorage

Systems contain the address of the components registry and world contract as state variables. SystemStorage ensures that these addresses are stored at deterministic locations in a System contract's storage. Developers can read/write components and access world utilities from any library called by a System. Warning: Library must be initialized (init) by a contract that can access components + world contracts before use. The intialization is done automatically for any contract inheriting System or MudTest.

# Layout

struct Layout {
  contract IUint256Component components;
  contract IWorld world;
}

# STORAGE_SLOT

bytes32 STORAGE_SLOT

Location in memory where the Layout struct will be stored

# layout

function layout() internal pure returns (struct SystemStorage.Layout l)

Utility for accessing the STORAGE_SLOT location in the contract's storage

Name Type Description
l struct SystemStorage.Layout Layout struct at storage position l

# init

function init(contract IWorld _world, contract IUint256Component _components) internal

Register this component in the given world.

This function must be called at the start of any contract that expects libraries to access SystemStorage!

Name Type Description
_world contract IWorld Address of the World contract.
_components contract IUint256Component Address of the Components registry contract.

# components

function components() public view returns (contract IUint256Component)
Name Type Description
[0] contract IUint256Component Component registry contract

# world

function world() public view returns (contract IWorld)
Name Type Description
[0] contract IWorld World contract

# system

function system(uint256 systemID) internal view returns (address)
Name Type Description
systemID uint256 ID for a system
Name Type Description
[0] address address of the System contract from the components registry

# component

function component(uint256 componentID) internal view returns (address)
Name Type Description
componentID uint256 ID for a component
Name Type Description
[0] address address of the Component contract from the components registry

# World

The World contract is at the core of every on-chain world. Entities, components and systems are registered in the World. Components register updates to their state via the registerComponentValueSet and registerComponentValueRemoved methods, which emit the ComponentValueSet and ComponentValueRemoved events respectively.

Clients can reconstruct the entire state (of all components) by listening to these two events, instead of having to add a separate getter or event listener for every type of data. (Have a look at the MUD network package for a TypeScript implementation of contract/client state sync.)

The World is an ownerless and permissionless contract. Anyone can register new components and systems in the world (via the registerComponent and registerSystem methods). Clients decide which components and systems they care about.

# entities

contract Set entities

# _components

contract Uint256Component _components

# _systems

contract Uint256Component _systems

# register

contract RegisterSystem register

# ComponentValueSet

event ComponentValueSet(uint256 componentId, address component, uint256 entity, bytes data)

# ComponentValueRemoved

event ComponentValueRemoved(uint256 componentId, address component, uint256 entity)

# constructor

constructor() public

# init

function init() public

Initialize the World. Separated from the constructor to prevent circular dependencies.

# components

function components() public view returns (contract IUint256Component)

Get the component registry Uint256Component (mapping from component address to component id)

# systems

function systems() public view returns (contract IUint256Component)

Get the system registry Uint256Component (mapping from system address to system id)

# registerComponent

function registerComponent(address componentAddr, uint256 id) public

Register a new component in this World. ID must be unique.

# registerSystem

function registerSystem(address systemAddr, uint256 id) public

Register a new system in this World. ID must be unique.

# requireComponentRegistered

modifier requireComponentRegistered(address component)

Reverts if the component is not registered in this World.

# registerComponentValueSet

function registerComponentValueSet(address component, uint256 entity, bytes data) public

Deprecated - use registerComponentValueSet(entity, data) instead Register a component value update. Emits the ComponentValueSet event for clients to reconstruct the state.

# registerComponentValueSet

function registerComponentValueSet(uint256 entity, bytes data) public

Register a component value update. Emits the ComponentValueSet event for clients to reconstruct the state.

# registerComponentValueRemoved

function registerComponentValueRemoved(address component, uint256 entity) public

Deprecated - use registerComponentValueRemoved(entity) instead Register a component value removal. Emits the ComponentValueRemoved event for clients to reconstruct the state.

# registerComponentValueRemoved

function registerComponentValueRemoved(uint256 entity) public

Register a component value removal. Emits the ComponentValueRemoved event for clients to reconstruct the state.

# getComponent

function getComponent(uint256 id) external view returns (address)

Deprecated, but left here for backward compatibility. TODO: refactor all consumers.

# getComponentIdFromAddress

function getComponentIdFromAddress(address componentAddr) external view returns (uint256)

Deprecated, but left here for backward compatibility. TODO: refactor all consumers.

# getSystemAddress

function getSystemAddress(uint256 systemId) external view returns (address)

Deprecated, but left here for backward compatibility. TODO: refactor all consumers.

# getNumEntities

function getNumEntities() public view returns (uint256)

# query

function query(struct WorldQueryFragment[] worldQueryFragments) public view returns (uint256[])

Helper function to execute a query with query fragments referring to a component ID instead of a component address.

# hasEntity

function hasEntity(uint256 entity) public view returns (bool)

Check whether an entity exists in this world.

# getUniqueEntityId

function getUniqueEntityId() public view returns (uint256)

Get a new unique entity ID.

# Uint256Component

Reference implementation of a component storing a uint256 value for each entity.

# constructor

constructor(address world, uint256 id) public

# getSchema

function getSchema() public pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# set

function set(uint256 entity, uint256 value) public virtual

# getValue

function getValue(uint256 entity) public view virtual returns (uint256)

# getEntitiesWithValue

function getEntitiesWithValue(uint256 value) public view virtual returns (uint256[])

# componentsComponentId

uint256 componentsComponentId

# systemsComponentId

uint256 systemsComponentId

# IComponent

# getSchema

function getSchema() external pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# set

function set(uint256 entity, bytes value) external

# remove

function remove(uint256 entity) external

# has

function has(uint256 entity) external view returns (bool)

# getRawValue

function getRawValue(uint256 entity) external view returns (bytes)

# getEntities

function getEntities() external view returns (uint256[])

# getEntitiesWithValue

function getEntitiesWithValue(bytes value) external view returns (uint256[])

# registerIndexer

function registerIndexer(address indexer) external

# world

function world() external view returns (address)

# IEntityContainer

# has

function has(uint256 entity) external view returns (bool)

# getEntities

function getEntities() external view returns (uint256[])

# getEntitiesWithValue

function getEntitiesWithValue(bytes value) external view returns (uint256[])

# IEntityIndexer

# update

function update(uint256 entity, bytes value) external

# remove

function remove(uint256 entity) external

# IOwnableWritable

# authorizeWriter

function authorizeWriter(address writer) external

# unauthorizeWriter

function unauthorizeWriter(address writer) external

# IPayableSystem

# execute

function execute(bytes args) external payable returns (bytes)

# ISystem

# execute

function execute(bytes args) external returns (bytes)

# IUint256Component

# set

function set(uint256 entity, uint256 value) external

# getValue

function getValue(uint256 entity) external view returns (uint256)

# getEntitiesWithValue

function getEntitiesWithValue(uint256 value) external view returns (uint256[])

# WorldQueryFragment

struct WorldQueryFragment {
  enum QueryType queryType;
  uint256 componentId;
  bytes value;
}

# IWorld

# components

function components() external view returns (contract IUint256Component)

# systems

function systems() external view returns (contract IUint256Component)

# registerComponent

function registerComponent(address componentAddr, uint256 id) external

# getComponent

function getComponent(uint256 id) external view returns (address)

# getComponentIdFromAddress

function getComponentIdFromAddress(address componentAddr) external view returns (uint256)

# registerSystem

function registerSystem(address systemAddr, uint256 id) external

# registerComponentValueSet

function registerComponentValueSet(address component, uint256 entity, bytes data) external

# registerComponentValueSet

function registerComponentValueSet(uint256 entity, bytes data) external

# registerComponentValueRemoved

function registerComponentValueRemoved(address component, uint256 entity) external

# registerComponentValueRemoved

function registerComponentValueRemoved(uint256 entity) external

# getNumEntities

function getNumEntities() external view returns (uint256)

# hasEntity

function hasEntity(uint256 entity) external view returns (bool)

# getUniqueEntityId

function getUniqueEntityId() external view returns (uint256)

# query

function query(struct WorldQueryFragment[] worldQueryFragments) external view returns (uint256[])

# init

function init() external

# QueryType

enum QueryType {
  Has,
  Not,
  HasValue,
  NotValue,
  ProxyRead,
  ProxyExpand
}

# QueryFragment

struct QueryFragment {
  enum QueryType queryType;
  contract IComponent component;
  bytes value;
}

# RegisterType

enum RegisterType {
  Component,
  System
}

# ID

uint256 ID

# RegisterSystem

# constructor

constructor(contract IWorld _world, address _components) public

# requirement

function requirement(bytes args) public view returns (bytes)

# execute

function execute(address msgSender, enum RegisterType registerType, address addr, uint256 id) public returns (bytes)

# execute

function execute(bytes args) public returns (bytes)

# ComponentTest

# vm

contract Vm vm

# users

address payable[] users

# component

contract TestComponent component

# setUp

function setUp() public

# testSetAndGetValue

function testSetAndGetValue() public

# testRemove

function testRemove() public

# testGetEntities

function testGetEntities() public

# testGetEntitiesWithValue

function testGetEntitiesWithValue() public

# IndexerTest

# vm

contract Vm vm

# position

contract PositionComponent position

# damage

contract DamageComponent damage

# regionCreatures

contract Indexer regionCreatures

# setUp

function setUp() public

# testSetAndGetEntitiesWithValue

function testSetAndGetEntitiesWithValue() public

# testUpdate

function testUpdate() public

# testRemove

function testRemove() public

# testGetEntities

function testGetEntities() public

# LibQueryTest

# vm

contract Vm vm

# users

address payable[] users

# component1

contract TestComponent1 component1

# component2

contract TestComponent2 component2

# component3

contract TestComponent3 component3

# prototypeTag

contract PrototypeTagComponent prototypeTag

# fromPrototype

contract FromPrototypeComponent fromPrototype

# ownedByEntity

contract OwnedByEntityComponent ownedByEntity

# setUp

function setUp() public

# testHasQuery

function testHasQuery() public

# testHasValueQuery

function testHasValueQuery() public

# testCombinedHasQuery

function testCombinedHasQuery() public

# testCombinedHasValueQuery

function testCombinedHasValueQuery() public

# testCombinedHasHasValueQuery

function testCombinedHasHasValueQuery() public

# testCombinedHasNotQuery

function testCombinedHasNotQuery() public

# testCombinedHasValueNotQuery

function testCombinedHasValueNotQuery() public

# testCombinedHasHasValueNotQuery

function testCombinedHasHasValueNotQuery() public

# testNotValueQuery

function testNotValueQuery() public

# testInitialProxyExpand

function testInitialProxyExpand() public

# testDeepProxyExpand

function testDeepProxyExpand() public

# testProxyRead

function testProxyRead() public

# testDeepProxyRead

function testDeepProxyRead() public

# testGetValueWithProxy

function testGetValueWithProxy() public

# SetTest

# vm

contract Vm vm

# users

address payable[] users

# set

contract Set set

# setUp

function setUp() public

# testAdd

function testAdd() public

# testAddDuplicate

function testAddDuplicate() public

# testRemove

function testRemove() public

# testGetItems

function testGetItems() public

# testSize

function testSize() public

# testHas

function testHas() public

# SampleSystem

# constructor

constructor(contract IWorld _world, address _components) public

# execute

function execute(bytes arguments) public returns (bytes)

# executeTyped

function executeTyped() external returns (bytes)

# getWorld

function getWorld() public view returns (contract IWorld)

# getComponents

function getComponents() public view returns (contract IUint256Component)

# SystemTest

# systems

contract IUint256Component systems

# world

contract World world

# components

contract IUint256Component components

# system

contract SampleSystem system

# setUp

function setUp() public

# testSystemStorage

function testSystemStorage() public

# testSystemStorageTest

function testSystemStorageTest() public

# WorldTest

# vm

contract Vm vm

# users

address payable[] users

# world

contract World world

# component1

contract TestComponent1 component1

# component2

contract TestComponent2 component2

# component3

contract TestComponent3 component3

# prototypeTag

contract PrototypeTagComponent prototypeTag

# fromPrototype

contract FromPrototypeComponent fromPrototype

# ownedByEntity

contract OwnedByEntityComponent ownedByEntity

# setUp

function setUp() public

# testQuery

function testQuery() public

# ID

uint256 ID

# DamageComponent

# constructor

constructor(address world) public

# getSchema

function getSchema() public pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# set

function set(uint256 entity, uint256 value) public

# getValue

function getValue(uint256 entity) public view returns (uint256)

# getEntitiesWithValue

function getEntitiesWithValue(uint256 value) public view returns (uint256[])

# FromPrototypeComponent

# ID

uint256 ID

# constructor

constructor(address world) public

# getSchema

function getSchema() public pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# set

function set(uint256 entity, uint256 prototypeEntity) public

# getValue

function getValue(uint256 entity) public view returns (uint256)

# getEntitiesWithValue

function getEntitiesWithValue(uint256 prototypeEntity) public view returns (uint256[])

# OwnedByEntityComponent

# ID

uint256 ID

# constructor

constructor(address world) public

# getSchema

function getSchema() public pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# set

function set(uint256 entity, uint256 ownedByEntity) public

# getValue

function getValue(uint256 entity) public view returns (uint256)

# getEntitiesWithValue

function getEntitiesWithValue(uint256 ownedByEntity) public view returns (uint256[])

# Position

struct Position {
  int64 x;
  int64 y;
}

# ID

uint256 ID

# PositionComponent

# constructor

constructor(address world) public

# getSchema

function getSchema() public pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# set

function set(uint256 entity, struct Position value) public

# getValue

function getValue(uint256 entity) public view returns (struct Position)

# getEntitiesWithValue

function getEntitiesWithValue(struct Position value) public view returns (uint256[])

# PrototypeTagComponent

# ID

uint256 ID

# constructor

constructor(address world) public

# getSchema

function getSchema() public pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# set

function set(uint256 entity, bool value) public

# getValue

function getValue(uint256 entity) public view returns (bool)

# getEntitiesWithValue

function getEntitiesWithValue(bool value) public view returns (uint256[])

# TestComponent

# ID

uint256 ID

# constructor

constructor(address world) public

# getSchema

function getSchema() public pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# TestComponent1

# ID

uint256 ID

# constructor

constructor(address world) public

# getSchema

function getSchema() public pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# TestComponent2

# ID

uint256 ID

# constructor

constructor(address world) public

# getSchema

function getSchema() public pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# TestComponent3

# ID

uint256 ID

# constructor

constructor(address world) public

# getSchema

function getSchema() public pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# TestComponent4

# ID

uint256 ID

# constructor

constructor(address world) public

# getSchema

function getSchema() public pure returns (string[] keys, enum LibTypes.SchemaValue[] values)

Return the keys and value types of the schema of this component.

# UtilsTest

# testSplit

function testSplit() public

# freeFunction

freeFunction entityToAddress(uint256 entity) internal pure returns (address)

Turn an entity ID into its corresponding Ethereum address.

# freeFunction

freeFunction addressToEntity(address addr) internal pure returns (uint256)

Turn an Ethereum address into its corresponding entity ID.

# freeFunction

freeFunction getAddressById(contract IUint256Component registry, uint256 id) internal view returns (address)

Get an Ethereum address from an address/id registry component (like _components/_systems in World.sol)

# freeFunction

freeFunction getIdByAddress(contract IUint256Component registry, address addr) internal view returns (uint256)

Get an entity id from an address/id registry component (like _components/_systems in World.sol)

# freeFunction

freeFunction getComponentById(contract IUint256Component components, uint256 id) internal view returns (contract IComponent)

Get a Component from an address/id registry component (like _components in World.sol)

# freeFunction

freeFunction getSystemAddressById(contract IUint256Component components, uint256 id) internal view returns (address)

Get the Ethereum address of a System from an address/id component registry component in which the System registry component is registered (like _components in World.sol)

# freeFunction

freeFunction getSystemById(contract IUint256Component components, uint256 id) internal view returns (contract ISystem)

Get a System from an address/id component registry component in which the System registry component is registered (like _components in World.sol)

# freeFunction

freeFunction split(bytes data, uint8[] lengths) internal pure returns (bytes[])

Split a single bytes blob into an array of bytes of the given length