OpenLiberty/scripts/renderware/rw_chunk.gd

45 lines
867 B
GDScript3
Raw Permalink Normal View History

2022-11-09 02:48:53 +07:00
class_name RWChunk
extends RefCounted
2022-11-09 03:36:48 +07:00
## Base class for RenderWare chunks
##
## [url]https://gtamods.com/wiki/RenderWare_binary_stream_file[/url]
2022-11-09 02:48:53 +07:00
2022-11-17 22:18:23 +07:00
enum ChunkType {
2022-11-19 04:19:09 +07:00
STRING = 0x2,
TEXTURE = 0x6,
MATERIAL = 0x7,
MATERIAL_LIST = 0x8,
2022-12-04 17:16:17 +07:00
FRAME_LIST = 0xe,
2022-11-17 22:18:23 +07:00
GEOMETRY = 0xf,
CLUMP = 0x10,
2022-11-19 04:19:09 +07:00
RASTER = 0x15,
TEXTURE_DICT = 0x16,
2022-11-17 22:18:23 +07:00
GEOMETRY_LIST = 0x1a,
}
var type: ChunkType
2022-11-09 02:48:53 +07:00
var size: int
var library_id: int
var version: int:
get:
if library_id & 0xffff0000:
return (library_id >> 14 & 0x3ff00) + 0x30000 | (library_id >> 16 & 0x3f)
return library_id << 8
var build: int:
get:
if library_id & 0xffff0000:
return library_id & 0xffff
return 0
2022-11-09 05:55:25 +07:00
var _start: int
2022-11-09 02:48:53 +07:00
func _init(file: FileAccess):
type = file.get_32()
size = file.get_32()
library_id = file.get_32()
2022-11-09 05:55:25 +07:00
_start = file.get_position()
2022-11-09 23:43:27 +07:00
func skip(file: FileAccess) -> void:
file.seek(_start + size)