forked from K0lb3/UnityPy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRenderer.py
More file actions
92 lines (75 loc) · 3.63 KB
/
Renderer.py
File metadata and controls
92 lines (75 loc) · 3.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from .Component import Component
from .PPtr import PPtr
class StaticBatchInfo:
def __init__(self, reader):
self.firstSubMesh = reader.read_u_short()
self.subMeshCount = reader.read_u_short()
class Renderer(Component):
def __init__(self, reader):
super().__init__(reader=reader)
version = self.version
if version < (5,): # 5.0 down
self.m_Enabled = reader.read_boolean()
self.m_CastShadows = reader.read_boolean()
self.m_ReceiveShadows = reader.read_boolean()
self.m_LightmapIndex = reader.read_byte()
else: # 5.0 and up
if version >= (5, 4): # 5.4 and up
self.m_Enabled = reader.read_boolean()
self.m_CastShadows = reader.read_byte()
self.m_ReceiveShadows = reader.read_byte()
if version[:2] > (2017, 2): # 2017.2 and up
self.m_DynamicOccludee = reader.read_byte()
self.m_MotionVectors = reader.read_byte()
self.m_LightProbeUsage = reader.read_byte()
self.m_ReflectionProbeUsage = reader.read_byte()
if version >= (2019, 3): # 2019.3 and up
self.m_RayTracingMode = reader.read_byte()
if version >= (2020,): # 2020.1 and up
self.m_RayTraceProcedural = reader.read_byte()
reader.align_stream()
else:
self.m_Enabled = reader.read_boolean()
reader.align_stream()
self.m_CastShadows = reader.read_byte()
self.m_ReceiveShadows = reader.read_boolean()
reader.align_stream()
if version >= (2018,): # 2018 and up
self.m_RenderingLayerMask = reader.read_u_int()
if version >= (2018, 3): # 2018.3 and up
self.m_RendererPriority = reader.read_int()
self.m_LightmapIndex = reader.read_u_short()
self.m_LightmapIndexDynamic = reader.read_u_short()
if version >= (3,): # 3.0 and up
self.m_LightmapTilingOffset = reader.read_vector4()
if version >= (5,): # 5.0 and up
self.m_LightmapTilingOffsetDynamic = reader.read_vector4()
m_MaterialsSize = reader.read_int()
self.m_Materials = [PPtr(reader)
for _ in range(m_MaterialsSize)] # Material
if version < (3,): # 3.0 down
self.m_LightmapTilingOffset = reader.read_vector4()
else: # 3.0 and up
if version >= (5, 5): # 5.5 and up
self.m_StaticBatchInfo = StaticBatchInfo(reader)
else:
self.m_SubsetIndices = reader.read_u_int_array()
self.m_StaticBatchRoot = PPtr(reader) # Transform
if version >= (5, 4): # 5.4 and up
self.m_ProbeAnchor = PPtr(reader) # Transform
self.m_LightProbeVolumeOverride = PPtr(reader) # GameObject
elif version >= (3, 5): # 3.5 - 5.3
self.m_UseLightProbes = reader.read_boolean()
reader.align_stream()
if version >= (5,): # 5.0 and up
self.m_ReflectionProbeUsage = reader.read_int()
# Transform #5.0 and up m_ProbeAnchor
self.m_LightProbeAnchor = PPtr(reader)
if version >= (4, 3): # 4.3 and up
if version[:2] == (4, 3): # 4.3
self.m_SortingLayer = reader.read_short()
else:
self.m_SortingLayerID = reader.read_u_int()
# SInt16 m_SortingLayer 5.6 and up
self.m_SortingOrder = reader.read_short()
reader.align_stream()