// 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 Source */ 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 ) type RenderwareBinaryStream struct { Code RenderwareBinaryStream_Sections Size uint32 LibraryIdStamp uint32 Body interface{} _io *kaitai.Stream _root *RenderwareBinaryStream _parent interface{} _raw_Body []byte _f_version bool version int } func NewRenderwareBinaryStream() *RenderwareBinaryStream { return &RenderwareBinaryStream{ } } func (this *RenderwareBinaryStream) Read(io *kaitai.Stream, parent interface{}, 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__Geometry: 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__TextureDictionary: 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__GeometryList: 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__TextureNative: 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__Clump: 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__FrameList: 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 } 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) this._f_version = true return this.version, nil } /** * @see Source */ 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp20, err := this._io.ReadU4le() if err != nil { return err } this.NumAtomics = uint32(tmp20) tmp21, err := this._parent.Version() if err != nil { return err } if (tmp21 >= 208896) { tmp22, err := this._io.ReadU4le() if err != nil { return err } this.NumLights = uint32(tmp22) } tmp23, err := this._parent.Version() if err != nil { return err } if (tmp23 >= 208896) { tmp24, err := this._io.ReadU4le() if err != nil { return err } this.NumCameras = uint32(tmp24) } return err } /** * @see Source */ 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_numUvLayersRaw bool numUvLayersRaw int _f_isTextured bool isTextured bool _f_isNative bool isNative bool _f_numUvLayers bool numUvLayers int _f_isTextured2 bool isTextured2 bool _f_isPrelit bool isPrelit bool } func NewRenderwareBinaryStream_StructGeometry() *RenderwareBinaryStream_StructGeometry { return &RenderwareBinaryStream_StructGeometry{ } } func (this *RenderwareBinaryStream_StructGeometry) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp25, err := this._io.ReadU4le() if err != nil { return err } this.Format = uint32(tmp25) tmp26, err := this._io.ReadU4le() if err != nil { return err } this.NumTriangles = uint32(tmp26) tmp27, err := this._io.ReadU4le() if err != nil { return err } this.NumVertices = uint32(tmp27) tmp28, err := this._io.ReadU4le() if err != nil { return err } this.NumMorphTargets = uint32(tmp28) tmp29, err := this._parent.Version() if err != nil { return err } if (tmp29 < 212992) { tmp30 := NewRenderwareBinaryStream_SurfaceProperties() err = tmp30.Read(this._io, this, this._root) if err != nil { return err } this.SurfProp = tmp30 } tmp31, err := this.IsNative() if err != nil { return err } if (!(tmp31)) { tmp32 := NewRenderwareBinaryStream_GeometryNonNative() err = tmp32.Read(this._io, this, this._root) if err != nil { return err } this.Geometry = tmp32 } for i := 0; i < int(this.NumMorphTargets); i++ { _ = i tmp33 := NewRenderwareBinaryStream_MorphTarget() err = tmp33.Read(this._io, this, this._root) if err != nil { return err } this.MorphTargets = append(this.MorphTargets, tmp33) } return err } func (this *RenderwareBinaryStream_StructGeometry) NumUvLayersRaw() (v int, err error) { if (this._f_numUvLayersRaw) { return this.numUvLayersRaw, nil } this.numUvLayersRaw = int(((this.Format & 16711680) >> 16)) this._f_numUvLayersRaw = true return this.numUvLayersRaw, nil } func (this *RenderwareBinaryStream_StructGeometry) IsTextured() (v bool, err error) { if (this._f_isTextured) { return this.isTextured, nil } this.isTextured = bool((this.Format & 4) != 0) this._f_isTextured = true return this.isTextured, nil } func (this *RenderwareBinaryStream_StructGeometry) IsNative() (v bool, err error) { if (this._f_isNative) { return this.isNative, nil } this.isNative = bool((this.Format & 16777216) != 0) this._f_isNative = true return this.isNative, nil } func (this *RenderwareBinaryStream_StructGeometry) NumUvLayers() (v int, err error) { if (this._f_numUvLayers) { return this.numUvLayers, nil } var tmp34 int8; tmp35, err := this.NumUvLayersRaw() if err != nil { return 0, err } if (tmp35 == 0) { var tmp36 int8; tmp37, err := this.IsTextured2() if err != nil { return 0, err } if (tmp37) { tmp36 = 2 } else { var tmp38 int8; tmp39, err := this.IsTextured() if err != nil { return 0, err } if (tmp39) { tmp38 = 1 } else { tmp38 = 0 } tmp36 = tmp38 } tmp34 = tmp36 } else { tmp40, err := this.NumUvLayersRaw() if err != nil { return 0, err } tmp34 = tmp40 } this.numUvLayers = int(tmp34) this._f_numUvLayers = true return this.numUvLayers, nil } func (this *RenderwareBinaryStream_StructGeometry) IsTextured2() (v bool, err error) { if (this._f_isTextured2) { return this.isTextured2, nil } this.isTextured2 = bool((this.Format & 128) != 0) this._f_isTextured2 = true return this.isTextured2, nil } func (this *RenderwareBinaryStream_StructGeometry) IsPrelit() (v bool, err error) { if (this._f_isPrelit) { return this.isPrelit, nil } this.isPrelit = bool((this.Format & 8) != 0) this._f_isPrelit = true return this.isPrelit, nil } 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_StructGeometry, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp41, err := this._parent.IsPrelit() if err != nil { return err } if (tmp41) { for i := 0; i < int(this._parent.NumVertices); i++ { _ = i tmp42 := NewRenderwareBinaryStream_Rgba() err = tmp42.Read(this._io, this, this._root) if err != nil { return err } this.PrelitColors = append(this.PrelitColors, tmp42) } } tmp43, err := this._parent.NumUvLayers() if err != nil { return err } for i := 0; i < int(tmp43); i++ { _ = i tmp44 := NewRenderwareBinaryStream_UvLayer(this._parent.NumVertices) err = tmp44.Read(this._io, this, this._root) if err != nil { return err } this.UvLayers = append(this.UvLayers, tmp44) } for i := 0; i < int(this._parent.NumTriangles); i++ { _ = i tmp45 := NewRenderwareBinaryStream_Triangle() err = tmp45.Read(this._io, this, this._root) if err != nil { return err } this.Triangles = append(this.Triangles, tmp45) } return err } /** * @see Source */ 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp46, err := this._io.ReadU4le() if err != nil { return err } this.NumGeometries = uint32(tmp46) 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_GeometryNonNative, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp47, err := this._io.ReadU1() if err != nil { return err } this.R = tmp47 tmp48, err := this._io.ReadU1() if err != nil { return err } this.G = tmp48 tmp49, err := this._io.ReadU1() if err != nil { return err } this.B = tmp49 tmp50, err := this._io.ReadU1() if err != nil { return err } this.A = tmp50 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_MorphTarget, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp51, err := this._io.ReadF4le() if err != nil { return err } this.X = float32(tmp51) tmp52, err := this._io.ReadF4le() if err != nil { return err } this.Y = float32(tmp52) tmp53, err := this._io.ReadF4le() if err != nil { return err } this.Z = float32(tmp53) tmp54, err := this._io.ReadF4le() if err != nil { return err } this.Radius = float32(tmp54) 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_StructGeometry, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp55 := NewRenderwareBinaryStream_Sphere() err = tmp55.Read(this._io, this, this._root) if err != nil { return err } this.BoundingSphere = tmp55 tmp56, err := this._io.ReadU4le() if err != nil { return err } this.HasVertices = uint32(tmp56) tmp57, err := this._io.ReadU4le() if err != nil { return err } this.HasNormals = uint32(tmp57) if (this.HasVertices != 0) { for i := 0; i < int(this._parent.NumVertices); i++ { _ = i tmp58 := NewRenderwareBinaryStream_Vector3d() err = tmp58.Read(this._io, this, this._root) if err != nil { return err } this.Vertices = append(this.Vertices, tmp58) } } if (this.HasNormals != 0) { for i := 0; i < int(this._parent.NumVertices); i++ { _ = i tmp59 := NewRenderwareBinaryStream_Vector3d() err = tmp59.Read(this._io, this, this._root) if err != nil { return err } this.Normals = append(this.Normals, tmp59) } } return err } /** * @see Source */ 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp60, err := this._io.ReadU4le() if err != nil { return err } this.FrameIndex = uint32(tmp60) tmp61, err := this._io.ReadU4le() if err != nil { return err } this.GeometryIndex = uint32(tmp61) tmp62, err := this._io.ReadBitsIntLe(1) if err != nil { return err } this.FlagRender = tmp62 != 0 tmp63, err := this._io.ReadBitsIntLe(1) if err != nil { return err } this._unnamed3 = tmp63 != 0 tmp64, err := this._io.ReadBitsIntLe(1) if err != nil { return err } this.FlagCollisionTest = tmp64 != 0 tmp65, err := this._io.ReadBitsIntLe(29) if err != nil { return err } this._unnamed5 = tmp65 this._io.AlignToByte() tmp66, err := this._io.ReadU4le() if err != nil { return err } this.Unused = uint32(tmp66) return err } /** * @see Source */ 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_StructGeometry, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp67, err := this._io.ReadF4le() if err != nil { return err } this.Ambient = float32(tmp67) tmp68, err := this._io.ReadF4le() if err != nil { return err } this.Specular = float32(tmp68) tmp69, err := this._io.ReadF4le() if err != nil { return err } this.Diffuse = float32(tmp69) return err } /** * @see Source */ 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp70, err := this._io.ReadU4le() if err != nil { return err } this.NumFrames = uint32(tmp70) for i := 0; i < int(this.NumFrames); i++ { _ = i tmp71 := NewRenderwareBinaryStream_Frame() err = tmp71.Read(this._io, this, this._root) if err != nil { return err } this.Frames = append(this.Frames, tmp71) } return err } /** * @see Source */ 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) 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 tmp72 := NewRenderwareBinaryStream_Vector3d() err = tmp72.Read(this._io, this, this._root) if err != nil { return err } this.Entries = append(this.Entries, tmp72) } return err } /** * @see Source */ type RenderwareBinaryStream_Vector3d struct { X float32 Y float32 Z float32 _io *kaitai.Stream _root *RenderwareBinaryStream _parent interface{} } func NewRenderwareBinaryStream_Vector3d() *RenderwareBinaryStream_Vector3d { return &RenderwareBinaryStream_Vector3d{ } } func (this *RenderwareBinaryStream_Vector3d) Read(io *kaitai.Stream, parent interface{}, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp73, err := this._io.ReadF4le() if err != nil { return err } this.X = float32(tmp73) tmp74, err := this._io.ReadF4le() if err != nil { return err } this.Y = float32(tmp74) tmp75, err := this._io.ReadF4le() if err != nil { return err } this.Z = float32(tmp75) 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp76, err := this._io.ReadBytes(int(4)) if err != nil { return err } tmp76 = tmp76 this.Code = tmp76 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") } tmp77, err := this._io.ReadU4le() if err != nil { return err } this.HeaderSize = uint32(tmp77) tmp78, err := this._io.ReadU4le() if err != nil { return err } this.LibraryIdStamp = uint32(tmp78) switch (this._parent.Code) { case RenderwareBinaryStream_Sections__Atomic: tmp79, err := this._io.ReadBytes(int(this.HeaderSize)) if err != nil { return err } tmp79 = tmp79 this._raw_Header = tmp79 _io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header)) tmp80 := NewRenderwareBinaryStream_StructAtomic() err = tmp80.Read(_io__raw_Header, this, this._root) if err != nil { return err } this.Header = tmp80 case RenderwareBinaryStream_Sections__Geometry: tmp81, err := this._io.ReadBytes(int(this.HeaderSize)) if err != nil { return err } tmp81 = tmp81 this._raw_Header = tmp81 _io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header)) tmp82 := NewRenderwareBinaryStream_StructGeometry() err = tmp82.Read(_io__raw_Header, this, this._root) if err != nil { return err } this.Header = tmp82 case RenderwareBinaryStream_Sections__TextureDictionary: tmp83, err := this._io.ReadBytes(int(this.HeaderSize)) if err != nil { return err } tmp83 = tmp83 this._raw_Header = tmp83 _io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header)) tmp84 := NewRenderwareBinaryStream_StructTextureDictionary() err = tmp84.Read(_io__raw_Header, this, this._root) if err != nil { return err } this.Header = tmp84 case RenderwareBinaryStream_Sections__GeometryList: tmp85, err := this._io.ReadBytes(int(this.HeaderSize)) if err != nil { return err } tmp85 = tmp85 this._raw_Header = tmp85 _io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header)) tmp86 := NewRenderwareBinaryStream_StructGeometryList() err = tmp86.Read(_io__raw_Header, this, this._root) if err != nil { return err } this.Header = tmp86 case RenderwareBinaryStream_Sections__Clump: tmp87, err := this._io.ReadBytes(int(this.HeaderSize)) if err != nil { return err } tmp87 = tmp87 this._raw_Header = tmp87 _io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header)) tmp88 := NewRenderwareBinaryStream_StructClump() err = tmp88.Read(_io__raw_Header, this, this._root) if err != nil { return err } this.Header = tmp88 case RenderwareBinaryStream_Sections__FrameList: tmp89, err := this._io.ReadBytes(int(this.HeaderSize)) if err != nil { return err } tmp89 = tmp89 this._raw_Header = tmp89 _io__raw_Header := kaitai.NewStream(bytes.NewReader(this._raw_Header)) tmp90 := NewRenderwareBinaryStream_StructFrameList() err = tmp90.Read(_io__raw_Header, this, this._root) if err != nil { return err } this.Header = tmp90 default: tmp91, err := this._io.ReadBytes(int(this.HeaderSize)) if err != nil { return err } tmp91 = tmp91 this._raw_Header = tmp91 } for i := 1;; i++ { tmp92, err := this._io.EOF() if err != nil { return err } if tmp92 { break } tmp93 := NewRenderwareBinaryStream() err = tmp93.Read(this._io, this, nil) if err != nil { return err } this.Entries = append(this.Entries, tmp93) } return err } func (this *RenderwareBinaryStream_ListWithHeader) Version() (v int, err error) { if (this._f_version) { return this.version, nil } var tmp94 int; if ((this.LibraryIdStamp & uint32(4294901760)) != 0) { tmp94 = ((((this.LibraryIdStamp >> 14) & 261888) + 196608) | ((this.LibraryIdStamp >> 16) & 63)) } else { tmp94 = (this.LibraryIdStamp << 8) } this.version = int(tmp94) this._f_version = true return this.version, nil } 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_GeometryNonNative, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp95, err := this._io.ReadU2le() if err != nil { return err } this.Vertex2 = uint16(tmp95) tmp96, err := this._io.ReadU2le() if err != nil { return err } this.Vertex1 = uint16(tmp96) tmp97, err := this._io.ReadU2le() if err != nil { return err } this.MaterialId = uint16(tmp97) tmp98, err := this._io.ReadU2le() if err != nil { return err } this.Vertex3 = uint16(tmp98) return err } /** * @see Source */ 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_StructFrameList, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp99 := NewRenderwareBinaryStream_Matrix() err = tmp99.Read(this._io, this, this._root) if err != nil { return err } this.RotationMatrix = tmp99 tmp100 := NewRenderwareBinaryStream_Vector3d() err = tmp100.Read(this._io, this, this._root) if err != nil { return err } this.Position = tmp100 tmp101, err := this._io.ReadS4le() if err != nil { return err } this.CurFrameIdx = int32(tmp101) tmp102, err := this._io.ReadU4le() if err != nil { return err } this.MatrixCreationFlags = uint32(tmp102) 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_UvLayer, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp103, err := this._io.ReadF4le() if err != nil { return err } this.U = float32(tmp103) tmp104, err := this._io.ReadF4le() if err != nil { return err } this.V = float32(tmp104) 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) 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 tmp105 := NewRenderwareBinaryStream_TexCoord() err = tmp105.Read(this._io, this, this._root) if err != nil { return err } this.TexCoords = append(this.TexCoords, tmp105) } 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) Read(io *kaitai.Stream, parent *RenderwareBinaryStream_ListWithHeader, root *RenderwareBinaryStream) (err error) { this._io = io this._parent = parent this._root = root tmp106, err := this._io.ReadU4le() if err != nil { return err } this.NumTextures = uint32(tmp106) return err }