unit

package
v0.4.3 Latest Latest
Warning

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

Go to latest
Published: Jan 16, 2025 License: BSD-3-Clause Imports: 7 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
	Unk01                 [8]byte
	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 {
	LODGroups              []LODGroup
	SkeletonMaps           []SkeletonMap
	Bones                  []Bone
	JointTransformMatrices [][4][4]float32
	Materials              map[stingray.ThinHash]stingray.Hash
	NumMeshes              uint32
	MeshInfos              []MeshInfo
	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 LODGroup added in v0.3.0

type LODGroup struct {
	Header struct {
		Unk00     uint32
		UnkHash00 stingray.ThinHash
		Unk01     uint32
		Unk02     uint32
	}
	Entries []LODEntry
	Footer  struct {
		UnkFloats00 [7]float32
		Unk00       uint32
		UnkFloat00  float32
		Unk01       uint32
	}
}

type Mesh

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

type MeshGroup

type MeshGroup struct {
	GroupIdx       uint32
	VertexOffset   uint32
	NumVertices    uint32
	IndexOffset    uint32
	NumIndices     uint32
	RepeatGroupIdx 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
	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) String

func (v MeshLayoutItemFormat) String() string

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