godot_voxel/doc/source/api/VoxelBlockSerializer.md
2021-05-31 17:23:29 +01:00

4.0 KiB

VoxelBlockSerializer

Inherits: Reference

Description:

Low-level utility to save and load the data within a VoxelBuffer. This can be useful to send data over the network, or to store it in a file.

Note: this utility uses StreamPeer as temporary support for the data, because Godot does not have a common interface between files and network streams. So typically, you should use a temporary StreamPeerBuffer to put voxel data into, and then you can use its member StreamPeerBuffer.data_array to save the data in the actual place you want.

To store into a file:

# Note, buffer can be re-used if you do this often
var stream_peer_buffer = StreamPeerBuffer.new()
var written_size = serializer.serialize(stream_peer_buffer, voxels, true)
file.store_32(written_size)
file.store_buffer(stream_peer_buffer.data_array)

To read it back:

var size = file.get_32()
var stream_peer_buffer = StreamPeerBuffer.new()
# Unfortunately Godot will always allocate memory with this API, can't avoid that
stream_peer_buffer.data_array = file.get_buffer(size)
serializer.deserialize(stream_peer_buffer, voxels, size, true)

Methods:

Return Signature
void deserialize ( StreamPeer peer, VoxelBuffer voxel_buffer, int size, bool decompress )
int serialize ( StreamPeer peer, VoxelBuffer voxel_buffer, bool compress )

Method Descriptions

Reads the data of a VoxelBuffer from a StreamPeer. You must provide the number of bytes to read, and the destination buffer must have the expected size.

Stores the data of a VoxelBuffer into a StreamPeer.

Generated on May 31, 2021