Skip to content

Commit 475b87b

Browse files
[Rendering] Fix bounds calculation for renderers;
1 parent c796dd1 commit 475b87b

File tree

3 files changed

+51
-9
lines changed

3 files changed

+51
-9
lines changed

Engine/Core/Rendering/Animation/SkinnedMeshRenderSystem.cs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,45 @@ public void Prepare()
6666

6767
public void Preprocess((Entity, Transform, IComponent)[] entities, Camera activeCamera, Transform activeCameraTransform)
6868
{
69+
foreach (var (_, transform, relatedComponent) in entities)
70+
{
71+
var renderer = relatedComponent as SkinnedMeshRenderer;
72+
73+
if (renderer.mesh == null ||
74+
renderer.mesh.meshAsset == null ||
75+
renderer.mesh.meshAssetIndex < 0 ||
76+
renderer.mesh.meshAssetIndex >= renderer.mesh.meshAsset.meshes.Count ||
77+
renderer.materials == null ||
78+
renderer.materials.Count != renderer.mesh.submeshes.Count)
79+
{
80+
continue;
81+
}
82+
83+
var skip = false;
84+
85+
for (var i = 0; i < renderer.materials.Count; i++)
86+
{
87+
if ((renderer.materials[i]?.IsValid ?? false) == false)
88+
{
89+
skip = true;
90+
91+
break;
92+
}
93+
}
94+
95+
if (skip)
96+
{
97+
continue;
98+
}
99+
100+
if (renderer.mesh.submeshes.Count > 0 && renderer.materials.Count != renderer.mesh.submeshes.Count)
101+
{
102+
continue;
103+
}
104+
105+
renderer.localBounds = renderer.mesh.bounds;
106+
renderer.bounds = new AABB(transform.Position + renderer.mesh.bounds.center, renderer.mesh.bounds.extents * 2 * transform.Scale);
107+
}
69108
}
70109

71110
public void Process((Entity, Transform, IComponent)[] entities, Camera activeCamera, Transform activeCameraTransform, ushort viewId)

Engine/Core/Rendering/Mesh/MeshRenderSystem.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -122,22 +122,30 @@ public void Preprocess((Entity, Transform, IComponent)[] entities, Camera active
122122
{
123123
var r = relatedComponent as MeshRenderer;
124124

125-
if (r.isVisible == false ||
126-
r.mesh == null ||
125+
if (r.mesh == null ||
127126
r.materials == null ||
128127
r.materials.Count == 0)
129128
{
130129
continue;
131130
}
132131

132+
var skip = false;
133+
133134
for (var i = 0; i < r.materials.Count; i++)
134135
{
135-
if (r.materials[i]?.IsValid == false)
136+
if ((r.materials[i]?.IsValid ?? false) == false)
136137
{
137-
continue;
138+
skip = true;
139+
140+
break;
138141
}
139142
}
140143

144+
if(skip)
145+
{
146+
continue;
147+
}
148+
141149
if (r.mesh.submeshes.Count > 0 && r.materials.Count != r.mesh.submeshes.Count)
142150
{
143151
continue;

Engine/Core/Rendering/Sprites/SpriteRenderSystem.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,6 @@ public void Preprocess((Entity, Transform, IComponent)[] entities,
9999
{
100100
var r = relatedComponent as SpriteRenderer;
101101

102-
if(r.isVisible == false)
103-
{
104-
continue;
105-
}
106-
107102
var hasValidAnimation = r.animation != null &&
108103
r.animation.texture != null &&
109104
r.animation.texture.Disposed == false &&

0 commit comments

Comments
 (0)