This page hosts a formal specification of RenderWare binary stream using Kaitai Struct. This specification can be automatically translated into a variety of programming languages to get a parsing library.
// Code generated by kaitai-struct-compiler from a .ksy source file. DO NOT EDIT.
import (
"github.com/kaitai-io/kaitai_struct_go_runtime/kaitai"
"bytes"
)
/**
* @see <a href="https://gtamods.com/wiki/RenderWare_binary_stream_file">Source</a>
*/
type RenderwareBinaryStream_Sections int
const (
RenderwareBinaryStream_Sections__Struct RenderwareBinaryStream_Sections = 1
RenderwareBinaryStream_Sections__String RenderwareBinaryStream_Sections = 2
RenderwareBinaryStream_Sections__Extension RenderwareBinaryStream_Sections = 3
RenderwareBinaryStream_Sections__Camera RenderwareBinaryStream_Sections = 5
RenderwareBinaryStream_Sections__Texture RenderwareBinaryStream_Sections = 6
RenderwareBinaryStream_Sections__Material RenderwareBinaryStream_Sections = 7
RenderwareBinaryStream_Sections__MaterialList RenderwareBinaryStream_Sections = 8
RenderwareBinaryStream_Sections__AtomicSection RenderwareBinaryStream_Sections = 9
RenderwareBinaryStream_Sections__PlaneSection RenderwareBinaryStream_Sections = 10
RenderwareBinaryStream_Sections__World RenderwareBinaryStream_Sections = 11
RenderwareBinaryStream_Sections__Spline RenderwareBinaryStream_Sections = 12
RenderwareBinaryStream_Sections__Matrix RenderwareBinaryStream_Sections = 13
RenderwareBinaryStream_Sections__FrameList RenderwareBinaryStream_Sections = 14
RenderwareBinaryStream_Sections__Geometry RenderwareBinaryStream_Sections = 15
RenderwareBinaryStream_Sections__Clump RenderwareBinaryStream_Sections = 16
RenderwareBinaryStream_Sections__Light RenderwareBinaryStream_Sections = 18
RenderwareBinaryStream_Sections__UnicodeString RenderwareBinaryStream_Sections = 19
RenderwareBinaryStream_Sections__Atomic RenderwareBinaryStream_Sections = 20
RenderwareBinaryStream_Sections__TextureNative RenderwareBinaryStream_Sections = 21
RenderwareBinaryStream_Sections__TextureDictionary RenderwareBinaryStream_Sections = 22
RenderwareBinaryStream_Sections__AnimationDatabase RenderwareBinaryStream_Sections = 23
RenderwareBinaryStream_Sections__Image RenderwareBinaryStream_Sections = 24
RenderwareBinaryStream_Sections__SkinAnimation RenderwareBinaryStream_Sections = 25
RenderwareBinaryStream_Sections__GeometryList RenderwareBinaryStream_Sections = 26
RenderwareBinaryStream_Sections__AnimAnimation RenderwareBinaryStream_Sections = 27
RenderwareBinaryStream_Sections__Team RenderwareBinaryStream_Sections = 28
RenderwareBinaryStream_Sections__Crowd RenderwareBinaryStream_Sections = 29
RenderwareBinaryStream_Sections__DeltaMorphAnimation RenderwareBinaryStream_Sections = 30
RenderwareBinaryStream_Sections__RightToRender RenderwareBinaryStream_Sections = 31
RenderwareBinaryStream_Sections__MultitextureEffectNative RenderwareBinaryStream_Sections = 32
RenderwareBinaryStream_Sections__MultitextureEffectDictionary RenderwareBinaryStream_Sections = 33
RenderwareBinaryStream_Sections__TeamDictionary RenderwareBinaryStream_Sections = 34
RenderwareBinaryStream_Sections__PlatformIndependentTextureDictionary RenderwareBinaryStream_Sections = 35
RenderwareBinaryStream_Sections__TableOfContents RenderwareBinaryStream_Sections = 36
RenderwareBinaryStream_Sections__ParticleStandardGlobalData RenderwareBinaryStream_Sections = 37
RenderwareBinaryStream_Sections__Altpipe RenderwareBinaryStream_Sections = 38
RenderwareBinaryStream_Sections__PlatformIndependentPeds RenderwareBinaryStream_Sections = 39
RenderwareBinaryStream_Sections__PatchMesh RenderwareBinaryStream_Sections = 40
RenderwareBinaryStream_Sections__ChunkGroupStart RenderwareBinaryStream_Sections = 41
RenderwareBinaryStream_Sections__ChunkGroupEnd RenderwareBinaryStream_Sections = 42
RenderwareBinaryStream_Sections__UvAnimationDictionary RenderwareBinaryStream_Sections = 43
RenderwareBinaryStream_Sections__CollTree RenderwareBinaryStream_Sections = 44
RenderwareBinaryStream_Sections__MetricsPlg RenderwareBinaryStream_Sections = 257
RenderwareBinaryStream_Sections__SplinePlg RenderwareBinaryStream_Sections = 258
RenderwareBinaryStream_Sections__StereoPlg RenderwareBinaryStream_Sections = 259
RenderwareBinaryStream_Sections__VrmlPlg RenderwareBinaryStream_Sections = 260
RenderwareBinaryStream_Sections__MorphPlg RenderwareBinaryStream_Sections = 261
RenderwareBinaryStream_Sections__PvsPlg RenderwareBinaryStream_Sections = 262
RenderwareBinaryStream_Sections__MemoryLeakPlg RenderwareBinaryStream_Sections = 263
RenderwareBinaryStream_Sections__AnimationPlg RenderwareBinaryStream_Sections = 264
RenderwareBinaryStream_Sections__GlossPlg RenderwareBinaryStream_Sections = 265
RenderwareBinaryStream_Sections__LogoPlg RenderwareBinaryStream_Sections = 266
RenderwareBinaryStream_Sections__MemoryInfoPlg RenderwareBinaryStream_Sections = 267
RenderwareBinaryStream_Sections__RandomPlg RenderwareBinaryStream_Sections = 268
RenderwareBinaryStream_Sections__PngImagePlg RenderwareBinaryStream_Sections = 269
RenderwareBinaryStream_Sections__BonePlg RenderwareBinaryStream_Sections = 270
RenderwareBinaryStream_Sections__VrmlAnimPlg RenderwareBinaryStream_Sections = 271
RenderwareBinaryStream_Sections__SkyMipmapVal RenderwareBinaryStream_Sections = 272
RenderwareBinaryStream_Sections__MrmPlg RenderwareBinaryStream_Sections = 273
RenderwareBinaryStream_Sections__LodAtomicPlg RenderwareBinaryStream_Sections = 274
RenderwareBinaryStream_Sections__MePlg RenderwareBinaryStream_Sections = 275
RenderwareBinaryStream_Sections__LightmapPlg RenderwareBinaryStream_Sections = 276
RenderwareBinaryStream_Sections__RefinePlg RenderwareBinaryStream_Sections = 277
RenderwareBinaryStream_Sections__SkinPlg RenderwareBinaryStream_Sections = 278
RenderwareBinaryStream_Sections__LabelPlg RenderwareBinaryStream_Sections = 279
RenderwareBinaryStream_Sections__ParticlesPlg RenderwareBinaryStream_Sections = 280
RenderwareBinaryStream_Sections__GeomtxPlg RenderwareBinaryStream_Sections = 281
RenderwareBinaryStream_Sections__SynthCorePlg RenderwareBinaryStream_Sections = 282
RenderwareBinaryStream_Sections__StqppPlg RenderwareBinaryStream_Sections = 283
RenderwareBinaryStream_Sections__PartPpPlg RenderwareBinaryStream_Sections = 284
RenderwareBinaryStream_Sections__CollisionPlg RenderwareBinaryStream_Sections = 285
RenderwareBinaryStream_Sections__HanimPlg RenderwareBinaryStream_Sections = 286
RenderwareBinaryStream_Sections__UserDataPlg RenderwareBinaryStream_Sections = 287
RenderwareBinaryStream_Sections__MaterialEffectsPlg RenderwareBinaryStream_Sections = 288
RenderwareBinaryStream_Sections__ParticleSystemPlg RenderwareBinaryStream_Sections = 289
RenderwareBinaryStream_Sections__DeltaMorphPlg RenderwareBinaryStream_Sections = 290
RenderwareBinaryStream_Sections__PatchPlg RenderwareBinaryStream_Sections = 291
RenderwareBinaryStream_Sections__TeamPlg RenderwareBinaryStream_Sections = 292
RenderwareBinaryStream_Sections__CrowdPpPlg RenderwareBinaryStream_Sections = 293
RenderwareBinaryStream_Sections__MipSplitPlg RenderwareBinaryStream_Sections = 294
RenderwareBinaryStream_Sections__AnisotropyPlg RenderwareBinaryStream_Sections = 295
RenderwareBinaryStream_Sections__GcnMaterialPlg RenderwareBinaryStream_Sections = 297
RenderwareBinaryStream_Sections__GeometricPvsPlg RenderwareBinaryStream_Sections = 298
RenderwareBinaryStream_Sections__XboxMaterialPlg RenderwareBinaryStream_Sections = 299
RenderwareBinaryStream_Sections__MultiTexturePlg RenderwareBinaryStream_Sections = 300
RenderwareBinaryStream_Sections__ChainPlg RenderwareBinaryStream_Sections = 301
RenderwareBinaryStream_Sections__ToonPlg RenderwareBinaryStream_Sections = 302
RenderwareBinaryStream_Sections__PtankPlg RenderwareBinaryStream_Sections = 303
RenderwareBinaryStream_Sections__ParticleStandardPlg RenderwareBinaryStream_Sections = 304
RenderwareBinaryStream_Sections__PdsPlg RenderwareBinaryStream_Sections = 305
RenderwareBinaryStream_Sections__PrtadvPlg RenderwareBinaryStream_Sections = 306
RenderwareBinaryStream_Sections__NormalMapPlg RenderwareBinaryStream_Sections = 307
RenderwareBinaryStream_Sections__AdcPlg RenderwareBinaryStream_Sections = 308
RenderwareBinaryStream_Sections__UvAnimationPlg RenderwareBinaryStream_Sections = 309
RenderwareBinaryStream_Sections__CharacterSetPlg RenderwareBinaryStream_Sections = 384
RenderwareBinaryStream_Sections__NohsWorldPlg RenderwareBinaryStream_Sections = 385
RenderwareBinaryStream_Sections__ImportUtilPlg RenderwareBinaryStream_Sections = 386
RenderwareBinaryStream_Sections__SlerpPlg RenderwareBinaryStream_Sections = 387
RenderwareBinaryStream_Sections__OptimPlg RenderwareBinaryStream_Sections = 388
RenderwareBinaryStream_Sections__TlWorldPlg RenderwareBinaryStream_Sections = 389
RenderwareBinaryStream_Sections__DatabasePlg RenderwareBinaryStream_Sections = 390
RenderwareBinaryStream_Sections__RaytracePlg RenderwareBinaryStream_Sections = 391
RenderwareBinaryStream_Sections__RayPlg RenderwareBinaryStream_Sections = 392
RenderwareBinaryStream_Sections__LibraryPlg RenderwareBinaryStream_Sections = 393
RenderwareBinaryStream_Sections__Plg2d RenderwareBinaryStream_Sections = 400
RenderwareBinaryStream_Sections__TileRenderPlg RenderwareBinaryStream_Sections = 401
RenderwareBinaryStream_Sections__JpegImagePlg RenderwareBinaryStream_Sections = 402
RenderwareBinaryStream_Sections__TgaImagePlg RenderwareBinaryStream_Sections = 403
RenderwareBinaryStream_Sections__GifImagePlg RenderwareBinaryStream_Sections = 404
RenderwareBinaryStream_Sections__QuatPlg RenderwareBinaryStream_Sections = 405
RenderwareBinaryStream_Sections__SplinePvsPlg RenderwareBinaryStream_Sections = 406
RenderwareBinaryStream_Sections__MipmapPlg RenderwareBinaryStream_Sections = 407
RenderwareBinaryStream_Sections__MipmapkPlg RenderwareBinaryStream_Sections = 408
RenderwareBinaryStream_Sections__Font2d RenderwareBinaryStream_Sections = 409
RenderwareBinaryStream_Sections__IntersectionPlg RenderwareBinaryStream_Sections = 410
RenderwareBinaryStream_Sections__TiffImagePlg RenderwareBinaryStream_Sections = 411
RenderwareBinaryStream_Sections__PickPlg RenderwareBinaryStream_Sections = 412
RenderwareBinaryStream_Sections__BmpImagePlg RenderwareBinaryStream_Sections = 413
RenderwareBinaryStream_Sections__RasImagePlg RenderwareBinaryStream_Sections = 414
RenderwareBinaryStream_Sections__SkinFxPlg RenderwareBinaryStream_Sections = 415
RenderwareBinaryStream_Sections__VcatPlg RenderwareBinaryStream_Sections = 416
RenderwareBinaryStream_Sections__Path2d RenderwareBinaryStream_Sections = 417
RenderwareBinaryStream_Sections__Brush2d RenderwareBinaryStream_Sections = 418
RenderwareBinaryStream_Sections__Object2d RenderwareBinaryStream_Sections = 419
RenderwareBinaryStream_Sections__Shape2d RenderwareBinaryStream_Sections = 420
RenderwareBinaryStream_Sections__Scene2d RenderwareBinaryStream_Sections = 421
RenderwareBinaryStream_Sections__PickRegion2d RenderwareBinaryStream_Sections = 422
RenderwareBinaryStream_Sections__ObjectString2d RenderwareBinaryStream_Sections = 423
RenderwareBinaryStream_Sections__AnimationPlg2d RenderwareBinaryStream_Sections = 424
RenderwareBinaryStream_Sections__Animation2d RenderwareBinaryStream_Sections = 425
RenderwareBinaryStream_Sections__Keyframe2d RenderwareBinaryStream_Sections = 432
RenderwareBinaryStream_Sections__Maestro2d RenderwareBinaryStream_Sections = 433
RenderwareBinaryStream_Sections__Barycentric RenderwareBinaryStream_Sections = 434
RenderwareBinaryStream_Sections__PlatformIndependentTextureDictionaryTk RenderwareBinaryStream_Sections = 435
RenderwareBinaryStream_Sections__TocTk RenderwareBinaryStream_Sections = 436
RenderwareBinaryStream_Sections__TplTk RenderwareBinaryStream_Sections = 437
RenderwareBinaryStream_Sections__AltpipeTk RenderwareBinaryStream_Sections = 438
RenderwareBinaryStream_Sections__AnimationTk RenderwareBinaryStream_Sections = 439
RenderwareBinaryStream_Sections__SkinSplitTookit RenderwareBinaryStream_Sections = 440
RenderwareBinaryStream_Sections__CompressedKeyTk RenderwareBinaryStream_Sections = 441
RenderwareBinaryStream_Sections__GeometryConditioningPlg RenderwareBinaryStream_Sections = 442
RenderwareBinaryStream_Sections__WingPlg RenderwareBinaryStream_Sections = 443
RenderwareBinaryStream_Sections__GenericPipelineTk RenderwareBinaryStream_Sections = 444
RenderwareBinaryStream_Sections__LightmapConversionTk RenderwareBinaryStream_Sections = 445
RenderwareBinaryStream_Sections__FilesystemPlg RenderwareBinaryStream_Sections = 446
RenderwareBinaryStream_Sections__DictionaryTk RenderwareBinaryStream_Sections = 447
RenderwareBinaryStream_Sections__UvAnimationLinear RenderwareBinaryStream_Sections = 448
RenderwareBinaryStream_Sections__UvAnimationParameter RenderwareBinaryStream_Sections = 449
RenderwareBinaryStream_Sections__BinMeshPlg RenderwareBinaryStream_Sections = 1294
RenderwareBinaryStream_Sections__NativeDataPlg RenderwareBinaryStream_Sections = 1296
RenderwareBinaryStream_Sections__ZmodelerLock RenderwareBinaryStream_Sections = 61982
RenderwareBinaryStream_Sections__AtomicVisibilityDistance RenderwareBinaryStream_Sections = 39055872
RenderwareBinaryStream_Sections__ClumpVisibilityDistance RenderwareBinaryStream_Sections = 39055873
RenderwareBinaryStream_Sections__FrameVisibilityDistance RenderwareBinaryStream_Sections = 39055874
RenderwareBinaryStream_Sections__PipelineSet RenderwareBinaryStream_Sections = 39056115
RenderwareBinaryStream_Sections__Unused5 RenderwareBinaryStream_Sections = 39056116
RenderwareBinaryStream_Sections__TexdictionaryLink RenderwareBinaryStream_Sections = 39056117
RenderwareBinaryStream_Sections__SpecularMaterial RenderwareBinaryStream_Sections = 39056118
RenderwareBinaryStream_Sections__Unused8 RenderwareBinaryStream_Sections = 39056119
RenderwareBinaryStream_Sections__Effect2d RenderwareBinaryStream_Sections = 39056120
RenderwareBinaryStream_Sections__ExtraVertColour RenderwareBinaryStream_Sections = 39056121
RenderwareBinaryStream_Sections__CollisionModel RenderwareBinaryStream_Sections = 39056122
RenderwareBinaryStream_Sections__GtaHanim RenderwareBinaryStream_Sections = 39056123
RenderwareBinaryStream_Sections__ReflectionMaterial RenderwareBinaryStream_Sections = 39056124
RenderwareBinaryStream_Sections__Breakable RenderwareBinaryStream_Sections = 39056125
RenderwareBinaryStream_Sections__Frame RenderwareBinaryStream_Sections = 39056126
RenderwareBinaryStream_Sections__Unused16 RenderwareBinaryStream_Sections = 39056127
)
var values_RenderwareBinaryStream_Sections = map[RenderwareBinaryStream_Sections]struct{}{1: {}, 2: {}, 3: {}, 5: {}, 6: {}, 7: {}, 8: {}, 9: {}, 10: {}, 11: {}, 12: {}, 13: {}, 14: {}, 15: {}, 16: {}, 18: {}, 19: {}, 20: {}, 21: {}, 22: {}, 23: {}, 24: {}, 25: {}, 26: {}, 27: {}, 28: {}, 29: {}, 30: {}, 31: {}, 32: {}, 33: {}, 34: {}, 35: {}, 36: {}, 37: {}, 38: {}, 39: {}, 40: {}, 41: {}, 42: {}, 43: {}, 44: {}, 257: {}, 258: {}, 259: {}, 260: {}, 261: {}, 262: {}, 263: {}, 264: {}, 265: {}, 266: {}, 267: {}, 268: {}, 269: {}, 270: {}, 271: {}, 272: {}, 273: {}, 274: {}, 275: {}, 276: {}, 277: {}, 278: {}, 279: {}, 280: {}, 281: {}, 282: {}, 283: {}, 284: {}, 285: {}, 286: {}, 287: {}, 288: {}, 289: {}, 290: {}, 291: {}, 292: {}, 293: {}, 294: {}, 295: {}, 297: {}, 298: {}, 299: {}, 300: {}, 301: {}, 302: {}, 303: {}, 304: {}, 305: {}, 306: {}, 307: {}, 308: {}, 309: {}, 384: {}, 385: {}, 386: {}, 387: {}, 388: {}, 389: {}, 390: {}, 391: {}, 392: {}, 393: {}, 400: {}, 401: {}, 402: {}, 403: {}, 404: {}, 405: {}, 406: {}, 407: {}, 408: {}, 409: {}, 410: {}, 411: {}, 412: {}, 413: {}, 414: {}, 415: {}, 416: {}, 417: {}, 418: {}, 419: {}, 420: {}, 421: {}, 422: {}, 423: {}, 424: {}, 425: {}, 432: {}, 433: {}, 434: {}, 435: {}, 436: {}, 437: {}, 438: {}, 439: {}, 440: {}, 441: {}, 442: {}, 443: {}, 444: {}, 445: {}, 446: {}, 447: {}, 448: {}, 449: {}, 1294: {}, 1296: {}, 61982: {}, 39055872: {}, 39055873: {}, 39055874: {}, 39056115: {}, 39056116: {}, 39056117: {}, 39056118: {}, 39056119: {}, 39056120: {}, 39056121: {}, 39056122: {}, 39056123: {}, 39056124: {}, 39056125: {}, 39056126: {}, 39056127: {}}
func (v RenderwareBinaryStream_Sections) isDefined() bool {
_, ok := values_RenderwareBinaryStream_Sections[v]
return ok
}
type RenderwareBinaryStream struct {
Code RenderwareBinaryStream_Sections
Size uint32
LibraryIdStamp uint32
Body interface{}
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent kaitai.Struct
_raw_Body []byte
_f_version bool
version int
}
func NewRenderwareBinaryStream() *RenderwareBinaryStream {
return &RenderwareBinaryStream{
}
}
func (this RenderwareBinaryStream) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream) Read(io *kaitai.Stream, parent kaitai.Struct, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp1, err := this._io.ReadU4le()
if err != nil {
return err
}
this.Code = RenderwareBinaryStream_Sections(tmp1)
tmp2, err := this._io.ReadU4le()
if err != nil {
return err
}
this.Size = uint32(tmp2)
tmp3, err := this._io.ReadU4le()
if err != nil {
return err
}
this.LibraryIdStamp = uint32(tmp3)
switch (this.Code) {
case RenderwareBinaryStream_Sections__Atomic:
tmp4, err := this._io.ReadBytes(int(this.Size))
if err != nil {
return err
}
tmp4 = tmp4
this._raw_Body = tmp4
_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
tmp5 := NewRenderwareBinaryStream_ListWithHeader()
err = tmp5.Read(_io__raw_Body, this, this._root)
if err != nil {
return err
}
this.Body = tmp5
case RenderwareBinaryStream_Sections__Clump:
tmp6, err := this._io.ReadBytes(int(this.Size))
if err != nil {
return err
}
tmp6 = tmp6
this._raw_Body = tmp6
_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
tmp7 := NewRenderwareBinaryStream_ListWithHeader()
err = tmp7.Read(_io__raw_Body, this, this._root)
if err != nil {
return err
}
this.Body = tmp7
case RenderwareBinaryStream_Sections__FrameList:
tmp8, err := this._io.ReadBytes(int(this.Size))
if err != nil {
return err
}
tmp8 = tmp8
this._raw_Body = tmp8
_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
tmp9 := NewRenderwareBinaryStream_ListWithHeader()
err = tmp9.Read(_io__raw_Body, this, this._root)
if err != nil {
return err
}
this.Body = tmp9
case RenderwareBinaryStream_Sections__Geometry:
tmp10, err := this._io.ReadBytes(int(this.Size))
if err != nil {
return err
}
tmp10 = tmp10
this._raw_Body = tmp10
_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
tmp11 := NewRenderwareBinaryStream_ListWithHeader()
err = tmp11.Read(_io__raw_Body, this, this._root)
if err != nil {
return err
}
this.Body = tmp11
case RenderwareBinaryStream_Sections__GeometryList:
tmp12, err := this._io.ReadBytes(int(this.Size))
if err != nil {
return err
}
tmp12 = tmp12
this._raw_Body = tmp12
_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
tmp13 := NewRenderwareBinaryStream_ListWithHeader()
err = tmp13.Read(_io__raw_Body, this, this._root)
if err != nil {
return err
}
this.Body = tmp13
case RenderwareBinaryStream_Sections__TextureDictionary:
tmp14, err := this._io.ReadBytes(int(this.Size))
if err != nil {
return err
}
tmp14 = tmp14
this._raw_Body = tmp14
_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
tmp15 := NewRenderwareBinaryStream_ListWithHeader()
err = tmp15.Read(_io__raw_Body, this, this._root)
if err != nil {
return err
}
this.Body = tmp15
case RenderwareBinaryStream_Sections__TextureNative:
tmp16, err := this._io.ReadBytes(int(this.Size))
if err != nil {
return err
}
tmp16 = tmp16
this._raw_Body = tmp16
_io__raw_Body := kaitai.NewStream(bytes.NewReader(this._raw_Body))
tmp17 := NewRenderwareBinaryStream_ListWithHeader()
err = tmp17.Read(_io__raw_Body, this, this._root)
if err != nil {
return err
}
this.Body = tmp17
default:
tmp18, err := this._io.ReadBytes(int(this.Size))
if err != nil {
return err
}
tmp18 = tmp18
this._raw_Body = tmp18
}
return err
}
func (this *RenderwareBinaryStream) Version() (v int, err error) {
if (this._f_version) {
return this.version, nil
}
this._f_version = true
var tmp19 int;
if (this.LibraryIdStamp & uint32(4294901760) != 0) {
tmp19 = ((this.LibraryIdStamp >> 14) & 261888 + 196608) | (this.LibraryIdStamp >> 16) & 63
} else {
tmp19 = this.LibraryIdStamp << 8
}
this.version = int(tmp19)
return this.version, nil
}
/**
* @see <a href="https://gtamods.com/wiki/Frame_List_(RW_Section)#Structure">Source</a>
*/
type RenderwareBinaryStream_Frame struct {
RotationMatrix *RenderwareBinaryStream_Matrix
Position *RenderwareBinaryStream_Vector3d
CurFrameIdx int32
MatrixCreationFlags uint32
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_StructFrameList
}
func NewRenderwareBinaryStream_Frame() *RenderwareBinaryStream_Frame {
return &RenderwareBinaryStream_Frame{
}
}
func (this RenderwareBinaryStream_Frame) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_Frame) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_StructFrameList, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp20 := NewRenderwareBinaryStream_Matrix()
err = tmp20.Read(this._io, this, this._root)
if err != nil {
return err
}
this.RotationMatrix = tmp20
tmp21 := NewRenderwareBinaryStream_Vector3d()
err = tmp21.Read(this._io, this, this._root)
if err != nil {
return err
}
this.Position = tmp21
tmp22, err := this._io.ReadS4le()
if err != nil {
return err
}
this.CurFrameIdx = int32(tmp22)
tmp23, err := this._io.ReadU4le()
if err != nil {
return err
}
this.MatrixCreationFlags = uint32(tmp23)
return err
}
type RenderwareBinaryStream_GeometryNonNative struct {
PrelitColors []*RenderwareBinaryStream_Rgba
UvLayers []*RenderwareBinaryStream_UvLayer
Triangles []*RenderwareBinaryStream_Triangle
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_StructGeometry
}
func NewRenderwareBinaryStream_GeometryNonNative() *RenderwareBinaryStream_GeometryNonNative {
return &RenderwareBinaryStream_GeometryNonNative{
}
}
func (this RenderwareBinaryStream_GeometryNonNative) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_GeometryNonNative) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_StructGeometry, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp24, err := this._parent.IsPrelit()
if err != nil {
return err
}
if (tmp24) {
for i := 0; i < int(this._parent.NumVertices); i++ {
_ = i
tmp25 := NewRenderwareBinaryStream_Rgba()
err = tmp25.Read(this._io, this, this._root)
if err != nil {
return err
}
this.PrelitColors = append(this.PrelitColors, tmp25)
}
}
tmp26, err := this._parent.NumUvLayers()
if err != nil {
return err
}
for i := 0; i < int(tmp26); i++ {
_ = i
tmp27 := NewRenderwareBinaryStream_UvLayer(this._parent.NumVertices)
err = tmp27.Read(this._io, this, this._root)
if err != nil {
return err
}
this.UvLayers = append(this.UvLayers, tmp27)
}
for i := 0; i < int(this._parent.NumTriangles); i++ {
_ = i
tmp28 := NewRenderwareBinaryStream_Triangle()
err = tmp28.Read(this._io, this, this._root)
if err != nil {
return err
}
this.Triangles = append(this.Triangles, tmp28)
}
return err
}
/**
* Typical structure used by many data types in RenderWare binary
* stream. Substream contains a list of binary stream entries,
* first entry always has type "struct" and carries some specific
* binary data it in, determined by the type of parent. All other
* entries, beside the first one, are normal, self-describing
* records.
*/
type RenderwareBinaryStream_ListWithHeader struct {
Code []byte
HeaderSize uint32
LibraryIdStamp uint32
Header interface{}
Entries []*RenderwareBinaryStream
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream
_raw_Header []byte
_f_version bool
version int
}
func NewRenderwareBinaryStream_ListWithHeader() *RenderwareBinaryStream_ListWithHeader {
return &RenderwareBinaryStream_ListWithHeader{
}
}
func (this RenderwareBinaryStream_ListWithHeader) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_ListWithHeader) Read(io *kaitai.Stream, parent *RenderwareBinaryStream, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp29, err := this._io.ReadBytes(int(4))
if err != nil {
return err
}
tmp29 = tmp29
this.Code = tmp29
if !(bytes.Equal(this.Code, []uint8{1, 0, 0, 0})) {
return kaitai.NewValidationNotEqualError([]uint8{1, 0, 0, 0}, this.Code, this._io, "/types/list_with_header/seq/0")
}
tmp30, err := this._io.ReadU4le()
if err != nil {
return err
}
this.HeaderSize = uint32(tmp30)
tmp31, err := this._io.ReadU4le()
if err != nil {
return err
}
this.LibraryIdStamp = uint32(tmp31)
switch (this._parent.Code) {
case RenderwareBinaryStream_Sections__Atomic:
tmp32, err := this._io.ReadBytes(int(this.HeaderSize))
if err != nil {
return err
}
tmp32 = tmp32
this._raw_Header = tmp32
_io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header))
tmp33 := NewRenderwareBinaryStream_StructAtomic()
err = tmp33.Read(_io__raw_Header, this, this._root)
if err != nil {
return err
}
this.Header = tmp33
case RenderwareBinaryStream_Sections__Clump:
tmp34, err := this._io.ReadBytes(int(this.HeaderSize))
if err != nil {
return err
}
tmp34 = tmp34
this._raw_Header = tmp34
_io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header))
tmp35 := NewRenderwareBinaryStream_StructClump()
err = tmp35.Read(_io__raw_Header, this, this._root)
if err != nil {
return err
}
this.Header = tmp35
case RenderwareBinaryStream_Sections__FrameList:
tmp36, err := this._io.ReadBytes(int(this.HeaderSize))
if err != nil {
return err
}
tmp36 = tmp36
this._raw_Header = tmp36
_io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header))
tmp37 := NewRenderwareBinaryStream_StructFrameList()
err = tmp37.Read(_io__raw_Header, this, this._root)
if err != nil {
return err
}
this.Header = tmp37
case RenderwareBinaryStream_Sections__Geometry:
tmp38, err := this._io.ReadBytes(int(this.HeaderSize))
if err != nil {
return err
}
tmp38 = tmp38
this._raw_Header = tmp38
_io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header))
tmp39 := NewRenderwareBinaryStream_StructGeometry()
err = tmp39.Read(_io__raw_Header, this, this._root)
if err != nil {
return err
}
this.Header = tmp39
case RenderwareBinaryStream_Sections__GeometryList:
tmp40, err := this._io.ReadBytes(int(this.HeaderSize))
if err != nil {
return err
}
tmp40 = tmp40
this._raw_Header = tmp40
_io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header))
tmp41 := NewRenderwareBinaryStream_StructGeometryList()
err = tmp41.Read(_io__raw_Header, this, this._root)
if err != nil {
return err
}
this.Header = tmp41
case RenderwareBinaryStream_Sections__TextureDictionary:
tmp42, err := this._io.ReadBytes(int(this.HeaderSize))
if err != nil {
return err
}
tmp42 = tmp42
this._raw_Header = tmp42
_io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header))
tmp43 := NewRenderwareBinaryStream_StructTextureDictionary()
err = tmp43.Read(_io__raw_Header, this, this._root)
if err != nil {
return err
}
this.Header = tmp43
default:
tmp44, err := this._io.ReadBytes(int(this.HeaderSize))
if err != nil {
return err
}
tmp44 = tmp44
this._raw_Header = tmp44
}
for i := 0;; i++ {
tmp45, err := this._io.EOF()
if err != nil {
return err
}
if tmp45 {
break
}
tmp46 := NewRenderwareBinaryStream()
err = tmp46.Read(this._io, this, this._root)
if err != nil {
return err
}
this.Entries = append(this.Entries, tmp46)
}
return err
}
func (this *RenderwareBinaryStream_ListWithHeader) Version() (v int, err error) {
if (this._f_version) {
return this.version, nil
}
this._f_version = true
var tmp47 int;
if (this.LibraryIdStamp & uint32(4294901760) != 0) {
tmp47 = ((this.LibraryIdStamp >> 14) & 261888 + 196608) | (this.LibraryIdStamp >> 16) & 63
} else {
tmp47 = this.LibraryIdStamp << 8
}
this.version = int(tmp47)
return this.version, nil
}
/**
* @see <a href="https://gtamods.com/wiki/Frame_List_(RW_Section)#Structure">Source</a>
*/
type RenderwareBinaryStream_Matrix struct {
Entries []*RenderwareBinaryStream_Vector3d
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_Frame
}
func NewRenderwareBinaryStream_Matrix() *RenderwareBinaryStream_Matrix {
return &RenderwareBinaryStream_Matrix{
}
}
func (this RenderwareBinaryStream_Matrix) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_Matrix) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_Frame, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
for i := 0; i < int(3); i++ {
_ = i
tmp48 := NewRenderwareBinaryStream_Vector3d()
err = tmp48.Read(this._io, this, this._root)
if err != nil {
return err
}
this.Entries = append(this.Entries, tmp48)
}
return err
}
type RenderwareBinaryStream_MorphTarget struct {
BoundingSphere *RenderwareBinaryStream_Sphere
HasVertices uint32
HasNormals uint32
Vertices []*RenderwareBinaryStream_Vector3d
Normals []*RenderwareBinaryStream_Vector3d
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_StructGeometry
}
func NewRenderwareBinaryStream_MorphTarget() *RenderwareBinaryStream_MorphTarget {
return &RenderwareBinaryStream_MorphTarget{
}
}
func (this RenderwareBinaryStream_MorphTarget) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_MorphTarget) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_StructGeometry, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp49 := NewRenderwareBinaryStream_Sphere()
err = tmp49.Read(this._io, this, this._root)
if err != nil {
return err
}
this.BoundingSphere = tmp49
tmp50, err := this._io.ReadU4le()
if err != nil {
return err
}
this.HasVertices = uint32(tmp50)
tmp51, err := this._io.ReadU4le()
if err != nil {
return err
}
this.HasNormals = uint32(tmp51)
if (this.HasVertices != 0) {
for i := 0; i < int(this._parent.NumVertices); i++ {
_ = i
tmp52 := NewRenderwareBinaryStream_Vector3d()
err = tmp52.Read(this._io, this, this._root)
if err != nil {
return err
}
this.Vertices = append(this.Vertices, tmp52)
}
}
if (this.HasNormals != 0) {
for i := 0; i < int(this._parent.NumVertices); i++ {
_ = i
tmp53 := NewRenderwareBinaryStream_Vector3d()
err = tmp53.Read(this._io, this, this._root)
if err != nil {
return err
}
this.Normals = append(this.Normals, tmp53)
}
}
return err
}
type RenderwareBinaryStream_Rgba struct {
R uint8
G uint8
B uint8
A uint8
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_GeometryNonNative
}
func NewRenderwareBinaryStream_Rgba() *RenderwareBinaryStream_Rgba {
return &RenderwareBinaryStream_Rgba{
}
}
func (this RenderwareBinaryStream_Rgba) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_Rgba) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_GeometryNonNative, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp54, err := this._io.ReadU1()
if err != nil {
return err
}
this.R = tmp54
tmp55, err := this._io.ReadU1()
if err != nil {
return err
}
this.G = tmp55
tmp56, err := this._io.ReadU1()
if err != nil {
return err
}
this.B = tmp56
tmp57, err := this._io.ReadU1()
if err != nil {
return err
}
this.A = tmp57
return err
}
type RenderwareBinaryStream_Sphere struct {
X float32
Y float32
Z float32
Radius float32
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_MorphTarget
}
func NewRenderwareBinaryStream_Sphere() *RenderwareBinaryStream_Sphere {
return &RenderwareBinaryStream_Sphere{
}
}
func (this RenderwareBinaryStream_Sphere) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_Sphere) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_MorphTarget, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp58, err := this._io.ReadF4le()
if err != nil {
return err
}
this.X = float32(tmp58)
tmp59, err := this._io.ReadF4le()
if err != nil {
return err
}
this.Y = float32(tmp59)
tmp60, err := this._io.ReadF4le()
if err != nil {
return err
}
this.Z = float32(tmp60)
tmp61, err := this._io.ReadF4le()
if err != nil {
return err
}
this.Radius = float32(tmp61)
return err
}
/**
* @see <a href="https://gtamods.com/wiki/Atomic_(RW_Section)#Structure">Source</a>
*/
type RenderwareBinaryStream_StructAtomic struct {
FrameIndex uint32
GeometryIndex uint32
FlagRender bool
_unnamed3 bool
FlagCollisionTest bool
_unnamed5 uint64
Unused uint32
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_ListWithHeader
}
func NewRenderwareBinaryStream_StructAtomic() *RenderwareBinaryStream_StructAtomic {
return &RenderwareBinaryStream_StructAtomic{
}
}
func (this RenderwareBinaryStream_StructAtomic) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_StructAtomic) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp62, err := this._io.ReadU4le()
if err != nil {
return err
}
this.FrameIndex = uint32(tmp62)
tmp63, err := this._io.ReadU4le()
if err != nil {
return err
}
this.GeometryIndex = uint32(tmp63)
tmp64, err := this._io.ReadBitsIntLe(1)
if err != nil {
return err
}
this.FlagRender = tmp64 != 0
tmp65, err := this._io.ReadBitsIntLe(1)
if err != nil {
return err
}
this._unnamed3 = tmp65 != 0
tmp66, err := this._io.ReadBitsIntLe(1)
if err != nil {
return err
}
this.FlagCollisionTest = tmp66 != 0
tmp67, err := this._io.ReadBitsIntLe(29)
if err != nil {
return err
}
this._unnamed5 = tmp67
this._io.AlignToByte()
tmp68, err := this._io.ReadU4le()
if err != nil {
return err
}
this.Unused = uint32(tmp68)
return err
}
/**
* @see <a href="https://gtamods.com/wiki/RpClump">Source</a>
*/
type RenderwareBinaryStream_StructClump struct {
NumAtomics uint32
NumLights uint32
NumCameras uint32
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_ListWithHeader
}
func NewRenderwareBinaryStream_StructClump() *RenderwareBinaryStream_StructClump {
return &RenderwareBinaryStream_StructClump{
}
}
func (this RenderwareBinaryStream_StructClump) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_StructClump) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp69, err := this._io.ReadU4le()
if err != nil {
return err
}
this.NumAtomics = uint32(tmp69)
tmp70, err := this._parent.Version()
if err != nil {
return err
}
if (tmp70 >= 208896) {
tmp71, err := this._io.ReadU4le()
if err != nil {
return err
}
this.NumLights = uint32(tmp71)
}
tmp72, err := this._parent.Version()
if err != nil {
return err
}
if (tmp72 >= 208896) {
tmp73, err := this._io.ReadU4le()
if err != nil {
return err
}
this.NumCameras = uint32(tmp73)
}
return err
}
/**
* @see <a href="https://gtamods.com/wiki/Frame_List_(RW_Section)#Structure">Source</a>
*/
type RenderwareBinaryStream_StructFrameList struct {
NumFrames uint32
Frames []*RenderwareBinaryStream_Frame
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_ListWithHeader
}
func NewRenderwareBinaryStream_StructFrameList() *RenderwareBinaryStream_StructFrameList {
return &RenderwareBinaryStream_StructFrameList{
}
}
func (this RenderwareBinaryStream_StructFrameList) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_StructFrameList) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp74, err := this._io.ReadU4le()
if err != nil {
return err
}
this.NumFrames = uint32(tmp74)
for i := 0; i < int(this.NumFrames); i++ {
_ = i
tmp75 := NewRenderwareBinaryStream_Frame()
err = tmp75.Read(this._io, this, this._root)
if err != nil {
return err
}
this.Frames = append(this.Frames, tmp75)
}
return err
}
/**
* @see <a href="https://gtamods.com/wiki/RpGeometry">Source</a>
*/
type RenderwareBinaryStream_StructGeometry struct {
Format uint32
NumTriangles uint32
NumVertices uint32
NumMorphTargets uint32
SurfProp *RenderwareBinaryStream_SurfaceProperties
Geometry *RenderwareBinaryStream_GeometryNonNative
MorphTargets []*RenderwareBinaryStream_MorphTarget
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_ListWithHeader
_f_isNative bool
isNative bool
_f_isPrelit bool
isPrelit bool
_f_isTextured bool
isTextured bool
_f_isTextured2 bool
isTextured2 bool
_f_numUvLayers bool
numUvLayers int
_f_numUvLayersRaw bool
numUvLayersRaw int
}
func NewRenderwareBinaryStream_StructGeometry() *RenderwareBinaryStream_StructGeometry {
return &RenderwareBinaryStream_StructGeometry{
}
}
func (this RenderwareBinaryStream_StructGeometry) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_StructGeometry) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp76, err := this._io.ReadU4le()
if err != nil {
return err
}
this.Format = uint32(tmp76)
tmp77, err := this._io.ReadU4le()
if err != nil {
return err
}
this.NumTriangles = uint32(tmp77)
tmp78, err := this._io.ReadU4le()
if err != nil {
return err
}
this.NumVertices = uint32(tmp78)
tmp79, err := this._io.ReadU4le()
if err != nil {
return err
}
this.NumMorphTargets = uint32(tmp79)
tmp80, err := this._parent.Version()
if err != nil {
return err
}
if (tmp80 < 212992) {
tmp81 := NewRenderwareBinaryStream_SurfaceProperties()
err = tmp81.Read(this._io, this, this._root)
if err != nil {
return err
}
this.SurfProp = tmp81
}
tmp82, err := this.IsNative()
if err != nil {
return err
}
if (!(tmp82)) {
tmp83 := NewRenderwareBinaryStream_GeometryNonNative()
err = tmp83.Read(this._io, this, this._root)
if err != nil {
return err
}
this.Geometry = tmp83
}
for i := 0; i < int(this.NumMorphTargets); i++ {
_ = i
tmp84 := NewRenderwareBinaryStream_MorphTarget()
err = tmp84.Read(this._io, this, this._root)
if err != nil {
return err
}
this.MorphTargets = append(this.MorphTargets, tmp84)
}
return err
}
func (this *RenderwareBinaryStream_StructGeometry) IsNative() (v bool, err error) {
if (this._f_isNative) {
return this.isNative, nil
}
this._f_isNative = true
this.isNative = bool(this.Format & 16777216 != 0)
return this.isNative, nil
}
func (this *RenderwareBinaryStream_StructGeometry) IsPrelit() (v bool, err error) {
if (this._f_isPrelit) {
return this.isPrelit, nil
}
this._f_isPrelit = true
this.isPrelit = bool(this.Format & 8 != 0)
return this.isPrelit, nil
}
func (this *RenderwareBinaryStream_StructGeometry) IsTextured() (v bool, err error) {
if (this._f_isTextured) {
return this.isTextured, nil
}
this._f_isTextured = true
this.isTextured = bool(this.Format & 4 != 0)
return this.isTextured, nil
}
func (this *RenderwareBinaryStream_StructGeometry) IsTextured2() (v bool, err error) {
if (this._f_isTextured2) {
return this.isTextured2, nil
}
this._f_isTextured2 = true
this.isTextured2 = bool(this.Format & 128 != 0)
return this.isTextured2, nil
}
func (this *RenderwareBinaryStream_StructGeometry) NumUvLayers() (v int, err error) {
if (this._f_numUvLayers) {
return this.numUvLayers, nil
}
this._f_numUvLayers = true
var tmp85 int8;
tmp86, err := this.NumUvLayersRaw()
if err != nil {
return 0, err
}
if (tmp86 == 0) {
var tmp87 int8;
tmp88, err := this.IsTextured2()
if err != nil {
return 0, err
}
if (tmp88) {
tmp87 = 2
} else {
var tmp89 int8;
tmp90, err := this.IsTextured()
if err != nil {
return 0, err
}
if (tmp90) {
tmp89 = 1
} else {
tmp89 = 0
}
tmp87 = tmp89
}
tmp85 = tmp87
} else {
tmp91, err := this.NumUvLayersRaw()
if err != nil {
return 0, err
}
tmp85 = tmp91
}
this.numUvLayers = int(tmp85)
return this.numUvLayers, nil
}
func (this *RenderwareBinaryStream_StructGeometry) NumUvLayersRaw() (v int, err error) {
if (this._f_numUvLayersRaw) {
return this.numUvLayersRaw, nil
}
this._f_numUvLayersRaw = true
this.numUvLayersRaw = int((this.Format & 16711680) >> 16)
return this.numUvLayersRaw, nil
}
/**
* @see <a href="https://gtamods.com/wiki/Geometry_List_(RW_Section)#Structure">Source</a>
*/
type RenderwareBinaryStream_StructGeometryList struct {
NumGeometries uint32
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_ListWithHeader
}
func NewRenderwareBinaryStream_StructGeometryList() *RenderwareBinaryStream_StructGeometryList {
return &RenderwareBinaryStream_StructGeometryList{
}
}
func (this RenderwareBinaryStream_StructGeometryList) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_StructGeometryList) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp92, err := this._io.ReadU4le()
if err != nil {
return err
}
this.NumGeometries = uint32(tmp92)
return err
}
type RenderwareBinaryStream_StructTextureDictionary struct {
NumTextures uint32
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_ListWithHeader
}
func NewRenderwareBinaryStream_StructTextureDictionary() *RenderwareBinaryStream_StructTextureDictionary {
return &RenderwareBinaryStream_StructTextureDictionary{
}
}
func (this RenderwareBinaryStream_StructTextureDictionary) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_StructTextureDictionary) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp93, err := this._io.ReadU4le()
if err != nil {
return err
}
this.NumTextures = uint32(tmp93)
return err
}
/**
* @see <a href="https://gtamods.com/wiki/RpGeometry">Source</a>
*/
type RenderwareBinaryStream_SurfaceProperties struct {
Ambient float32
Specular float32
Diffuse float32
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_StructGeometry
}
func NewRenderwareBinaryStream_SurfaceProperties() *RenderwareBinaryStream_SurfaceProperties {
return &RenderwareBinaryStream_SurfaceProperties{
}
}
func (this RenderwareBinaryStream_SurfaceProperties) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_SurfaceProperties) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_StructGeometry, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp94, err := this._io.ReadF4le()
if err != nil {
return err
}
this.Ambient = float32(tmp94)
tmp95, err := this._io.ReadF4le()
if err != nil {
return err
}
this.Specular = float32(tmp95)
tmp96, err := this._io.ReadF4le()
if err != nil {
return err
}
this.Diffuse = float32(tmp96)
return err
}
type RenderwareBinaryStream_TexCoord struct {
U float32
V float32
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_UvLayer
}
func NewRenderwareBinaryStream_TexCoord() *RenderwareBinaryStream_TexCoord {
return &RenderwareBinaryStream_TexCoord{
}
}
func (this RenderwareBinaryStream_TexCoord) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_TexCoord) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_UvLayer, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp97, err := this._io.ReadF4le()
if err != nil {
return err
}
this.U = float32(tmp97)
tmp98, err := this._io.ReadF4le()
if err != nil {
return err
}
this.V = float32(tmp98)
return err
}
type RenderwareBinaryStream_Triangle struct {
Vertex2 uint16
Vertex1 uint16
MaterialId uint16
Vertex3 uint16
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_GeometryNonNative
}
func NewRenderwareBinaryStream_Triangle() *RenderwareBinaryStream_Triangle {
return &RenderwareBinaryStream_Triangle{
}
}
func (this RenderwareBinaryStream_Triangle) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_Triangle) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_GeometryNonNative, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp99, err := this._io.ReadU2le()
if err != nil {
return err
}
this.Vertex2 = uint16(tmp99)
tmp100, err := this._io.ReadU2le()
if err != nil {
return err
}
this.Vertex1 = uint16(tmp100)
tmp101, err := this._io.ReadU2le()
if err != nil {
return err
}
this.MaterialId = uint16(tmp101)
tmp102, err := this._io.ReadU2le()
if err != nil {
return err
}
this.Vertex3 = uint16(tmp102)
return err
}
type RenderwareBinaryStream_UvLayer struct {
TexCoords []*RenderwareBinaryStream_TexCoord
NumVertices uint32
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent *RenderwareBinaryStream_GeometryNonNative
}
func NewRenderwareBinaryStream_UvLayer(numVertices uint32) *RenderwareBinaryStream_UvLayer {
return &RenderwareBinaryStream_UvLayer{
NumVertices: numVertices,
}
}
func (this RenderwareBinaryStream_UvLayer) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_UvLayer) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_GeometryNonNative, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
for i := 0; i < int(this.NumVertices); i++ {
_ = i
tmp103 := NewRenderwareBinaryStream_TexCoord()
err = tmp103.Read(this._io, this, this._root)
if err != nil {
return err
}
this.TexCoords = append(this.TexCoords, tmp103)
}
return err
}
/**
* @see <a href="https://gtamods.com/wiki/Frame_List_(RW_Section)#Structure">Source</a>
*/
type RenderwareBinaryStream_Vector3d struct {
X float32
Y float32
Z float32
_io *kaitai.Stream
_root *RenderwareBinaryStream
_parent kaitai.Struct
}
func NewRenderwareBinaryStream_Vector3d() *RenderwareBinaryStream_Vector3d {
return &RenderwareBinaryStream_Vector3d{
}
}
func (this RenderwareBinaryStream_Vector3d) IO_() *kaitai.Stream {
return this._io
}
func (this *RenderwareBinaryStream_Vector3d) Read(io *kaitai.Stream, parent kaitai.Struct, root *RenderwareBinaryStream) (err error) {
this._io = io
this._parent = parent
this._root = root
tmp104, err := this._io.ReadF4le()
if err != nil {
return err
}
this.X = float32(tmp104)
tmp105, err := this._io.ReadF4le()
if err != nil {
return err
}
this.Y = float32(tmp105)
tmp106, err := this._io.ReadF4le()
if err != nil {
return err
}
this.Z = float32(tmp106)
return err
}