Files
psn-go/internal/decoders/data_tracker_xyz_chunk.go
T

37 lines
837 B
Go

package decoders
import (
"encoding/binary"
"errors"
"math"
"github.com/jwetzell/psn-go/internal/chunks"
)
func DecodeDataTrackerXYZChunk(bytes []byte) (chunks.DataTrackerXYZChunk, error) {
chunk, err := DecodeChunk(bytes)
if err != nil {
return chunks.DataTrackerXYZChunk{}, err
}
if len(chunk.ChunkData) < 12 {
return chunks.DataTrackerXYZChunk{}, errors.New("DATA_TRACKER_XYZ chunk must be at least 12 bytes")
}
xBits := binary.LittleEndian.Uint32(chunk.ChunkData[0:4])
yBits := binary.LittleEndian.Uint32(chunk.ChunkData[4:8])
zBits := binary.LittleEndian.Uint32(chunk.ChunkData[8:12])
data := chunks.DataTrackerXYZChunkData{
X: math.Float32frombits(xBits),
Y: math.Float32frombits(yBits),
Z: math.Float32frombits(zBits),
}
return chunks.DataTrackerXYZChunk{
Chunk: chunk,
Data: data,
}, nil
}