unit

package
v0.6.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 10, 2025 License: BSD-3-Clause Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LoadMeshes added in v0.3.2

func LoadMeshes(gpuR io.ReadSeeker, info *Info, idsToLoad []uint32) (map[uint32]Mesh, error)

idsToLoad contains the mesh IDs (=indices) of the meshes which should be loaded. To load all meshes, pass a slice with value {0,1,...,info.NumMeshes-1}.

Types

type Bone added in v0.3.2

type Bone struct {
	NameHash    stingray.ThinHash
	Index       uint32
	ParentIndex uint32
	Increment   uint32
	Transform   JointTransform
	Matrix      mgl32.Mat4
	Children    []uint32
}

func (*Bone) RecursiveCalcLocalTransforms added in v0.3.2

func (curr *Bone) RecursiveCalcLocalTransforms(bones *[]Bone)
type Header struct {
	Unk00                 [8]byte
	Bones                 stingray.Hash
	GeometryGroup         stingray.Hash
	UnkHash00             stingray.Hash
	StateMachine          stingray.Hash
	Unk02                 [8]byte
	LODGroupListOffset    uint32
	JointListOffset       uint32
	UnkOffset01           uint32
	UnkOffset02           uint32
	Unk03                 [12]byte
	UnkOffset03           uint32
	UnkOffset04           uint32
	Unk04                 [4]byte
	SkeletonMapListOffset uint32
	MeshLayoutListOffset  uint32
	MeshDataOffset        uint32
	MeshInfoListOffset    uint32
	Unk05                 [8]byte
	MaterialListOffset    uint32
}

type Info added in v0.3.2

type Info struct {
	BonesHash              stingray.Hash
	StateMachine           stingray.Hash
	GeometryGroup          stingray.Hash
	LODGroups              []LODGroup
	SkeletonMaps           []SkeletonMap
	Bones                  []Bone
	JointTransformMatrices [][4][4]float32
	Materials              map[stingray.ThinHash]stingray.Hash
	NumMeshes              uint32
	MeshInfos              []MeshInfo
	GroupBones             []stingray.ThinHash
	MeshLayouts            []MeshLayout
}

func LoadInfo added in v0.3.2

func LoadInfo(mainR io.ReadSeeker) (*Info, error)

type JointListHeader

type JointListHeader struct {
	NumJoints uint32
	Unk00     [12]byte
}

type JointMapEntry added in v0.3.2

type JointMapEntry struct {
	Increment uint16
	Parent    uint16
}

type JointTransform

type JointTransform struct {
	Rotation    mgl32.Mat3
	Translation mgl32.Vec3
	Scale       mgl32.Vec3
	Skew        float32
}

type LODEntry added in v0.3.0

type LODEntry struct {
	Detail struct {
		Max float32
		Min float32
	}
	Indices []uint32
}

type LODFooter added in v0.5.19

type LODFooter struct {
	MinMax     [6]float32
	UnkFloat00 float32
	Unk00      uint32
	UnkFloat01 float32
	Unk01      uint32
}

type LODGroup added in v0.3.0

type LODGroup struct {
	Header struct {
		Unk00     uint32
		UnkHash00 stingray.ThinHash
		Unk01     uint32
	}
	Entries []LODEntry
	Footers []LODFooter
}

type LODOther added in v0.5.19

type LODOther struct {
	// No idea what these actually represent, maybe offsets or indices into another file?
	Unk00 uint32
	Unk01 uint32
	Unk02 uint32
	Unk03 uint32
	Unk04 uint32
	Unk05 uint32
	Unk06 uint32
	Unk07 uint32
}

type Mesh

type Mesh struct {
	Info        MeshInfo
	Positions   [][3]float32
	UVCoords    [][][2]float32
	Normals     [][3]float32
	BoneIndices [][][4]uint8
	BoneWeights [][4]float32
	Indices     [][]uint32
}

type MeshGroup

type MeshGroup struct {
	MaterialIdx  uint32
	VertexOffset uint32
	NumVertices  uint32
	IndexOffset  uint32
	NumIndices   uint32
	GroupIdx     uint32
}

type MeshHeader

type MeshHeader struct {
	Unk00 [8]byte
	AABB  struct {
		Min [3]float32
		Max [3]float32
	}
	UnkFloat00         float32
	MeshType           MeshHeaderType
	GroupBoneHash      stingray.ThinHash
	AABBTransformIndex uint32
	TransformIdx       uint32
	UnkInt03           uint32
	SkeletonMapIdx     int32
	LayoutIdx          int32
	Unk01              [40]byte
	NumMaterials       uint32
	MaterialOffset     uint32
	Unk02              [8]byte
	NumGroups          uint32
	GroupOffset        uint32
}

type MeshHeaderType added in v0.4.0

type MeshHeaderType uint32
const (
	MeshTypeUnknown00 MeshHeaderType = 0x000
	MeshTypeUnknown01 MeshHeaderType = 0x10a
	MeshTypeUnknown02 MeshHeaderType = 0x189
)

func (*MeshHeaderType) String added in v0.4.0

func (m *MeshHeaderType) String() string

type MeshInfo

type MeshInfo struct {
	Header    MeshHeader
	Materials []stingray.ThinHash
	Groups    []MeshGroup
}

type MeshLayout

type MeshLayout struct {
	MagicNum0 [4]byte
	Unk00     [4]byte
	Items     [16]struct {
		Type   MeshLayoutItemType
		Format MeshLayoutItemFormat
		Layer  uint32
		Unk00  [8]byte
	}
	NumItems      uint32
	Unk01         [4]byte
	MagicNum1     [4]byte
	Unk02         [12]byte
	NumVertices   uint32
	VertexStride  uint32
	Unk03         [16]byte
	MagicNum2     [4]byte
	Unk04         [12]byte
	NumIndices    uint32
	Unk05         [20]byte
	VertexOffset  uint32
	PositionsSize uint32
	IndexOffset   uint32
	IndicesSize   uint32
	Unk06         [16]byte
}

type MeshLayoutItemFormat

type MeshLayoutItemFormat uint32
const (
	FormatF32                      MeshLayoutItemFormat = 0
	FormatVec2F                    MeshLayoutItemFormat = 1
	FormatVec3F                    MeshLayoutItemFormat = 2
	FormatVec4F                    MeshLayoutItemFormat = 3
	FormatS32                      MeshLayoutItemFormat = 4
	FormatU32                      MeshLayoutItemFormat = 17
	FormatVec2U32                  MeshLayoutItemFormat = 18
	FormatVec3U32                  MeshLayoutItemFormat = 19
	FormatVec4U32                  MeshLayoutItemFormat = 20
	FormatS8                       MeshLayoutItemFormat = 21
	FormatVec2S8                   MeshLayoutItemFormat = 22
	FormatVec3S8                   MeshLayoutItemFormat = 23
	FormatVec4S8                   MeshLayoutItemFormat = 24
	FormatVec4R10G10B10A2_TYPELESS MeshLayoutItemFormat = 25
	FormatVec4R10G10B10A2_UNORM    MeshLayoutItemFormat = 26
	FormatF16                      MeshLayoutItemFormat = 28
	FormatVec2F16                  MeshLayoutItemFormat = 29
	FormatVec3F16                  MeshLayoutItemFormat = 30
	FormatVec4F16                  MeshLayoutItemFormat = 31
)

func (MeshLayoutItemFormat) ComponentType added in v0.5.14

func (v MeshLayoutItemFormat) ComponentType() gltf.ComponentType

func (MeshLayoutItemFormat) Size added in v0.5.14

func (v MeshLayoutItemFormat) Size() int

func (MeshLayoutItemFormat) String

func (v MeshLayoutItemFormat) String() string

func (MeshLayoutItemFormat) Type added in v0.5.14

type MeshLayoutItemType

type MeshLayoutItemType uint32
const (
	ItemPosition   MeshLayoutItemType = 0
	ItemNormal     MeshLayoutItemType = 1
	ItemUVCoords   MeshLayoutItemType = 4
	ItemBoneIdx    MeshLayoutItemType = 6
	ItemBoneWeight MeshLayoutItemType = 7
)

func (MeshLayoutItemType) String

func (v MeshLayoutItemType) String() string

type RemapItem added in v0.3.3

type RemapItem struct {
	IndexDataOffset uint32
	IndexCount      uint32
}

type SkeletonMap added in v0.3.2

type SkeletonMap struct {
	Count       uint32
	Matrices    [][4][4]float32
	BoneIndices []uint32
	RemapList   [][]uint32
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL