Store the position of an entity - AWS SimSpace Weaver

Store the position of an entity

You can store (write to the state fabric) the position of an entity using an integer data structure. These examples use the following function:

Result<void> StoreEntityIndexKey( Transaction& txn, const Entity& entity, TypeId keyTypeId, std::int8_t* src, std::size_t length)
Note

You must provide Api::BuiltinTypeId::Vector3F32 to Api::StoreEntityIndexKey(), as shown in the following examples.

Example using an array to represent the position
Result<void> SetEntityPositionByFloatArray( Api::Entity& entity, Transaction& transaction) { std::array<float, 3> position = { /* x */ 25, /* y */ 21, /* z */ 0 }; auto* src = reinterpret_cast<std::int8_t*>(position.data()); std::size_t length = sizeof(position); WEAVERRUNTIME_TRY(Api::StoreEntityIndexKey( transaction, entity, Api::BuiltinTypeIdToTypeId(Api::BuiltinTypeId::Vector3F32), src, length)); }
Example using a struct to represent the position
struct Position { float x; float y; float z; }; Result<void> SetEntityPositionByStruct( Api::Entity& entity, Transaction& transaction) { Position position = { /* x */ 25, /* y */ 21, /* z */ 0 }; auto* src = reinterpret_cast<std::int8_t*>(&position); std::size_t length = sizeof(position); WEAVERRUNTIME_TRY(Api::StoreEntityIndexKey( transaction, entity, Api::BuiltinTypeIdToTypeId(Api::BuiltinTypeId::Vector3F32), src, length)); }