summaryrefslogtreecommitdiff
path: root/Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-05-19 16:05:58 +0800
committerchai <215380520@qq.com>2024-05-19 16:05:58 +0800
commit8e13e7e2874adc8982e16d1d2ed2e28d7480b45f (patch)
tree63ef85c460288891f5a593d69afeca16cba050b3 /Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs
parentc5f145786f4c6d2fe4bea831dfc16e52228920a5 (diff)
+1.57
Diffstat (limited to 'Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs')
-rw-r--r--Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs131
1 files changed, 131 insertions, 0 deletions
diff --git a/Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs b/Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs
new file mode 100644
index 0000000..fbd86b3
--- /dev/null
+++ b/Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs
@@ -0,0 +1,131 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace NGS.MeshFusionPro;
+
+public class StaticMeshFusionSource : MeshFusionSource
+{
+ [SerializeField]
+ [HideInInspector]
+ private MeshRenderer _renderer;
+
+ [SerializeField]
+ [HideInInspector]
+ private MeshFilter _filter;
+
+ [SerializeField]
+ [HideInInspector]
+ private Mesh _mesh;
+
+ private CombineSource[] _sources;
+
+ private CombinedObjectPart[] _parts;
+
+ public override bool TryGetBounds(ref Bounds bounds)
+ {
+ if (_renderer != null)
+ {
+ bounds = _renderer.bounds;
+ return true;
+ }
+ return false;
+ }
+
+ protected override void OnSourceCombinedInternal(ICombinedObject root, ICombinedObjectPart part)
+ {
+ for (int i = 0; i < _parts.Length; i++)
+ {
+ if (_parts[i] == null)
+ {
+ _parts[i] = (CombinedObjectPart)part;
+ return;
+ }
+ }
+ throw new Exception("Unexpected Behaviour");
+ }
+
+ protected override bool CheckCompatibilityAndGetComponents(out string incompatibilityReason)
+ {
+ incompatibilityReason = "";
+ return CanCreateCombineSource(base.gameObject, ref incompatibilityReason, ref _renderer, ref _filter, ref _mesh);
+ }
+
+ protected override void CreateSources()
+ {
+ if (_sources == null)
+ {
+ _sources = new CombineSource[_mesh.subMeshCount];
+ }
+ if (_parts == null)
+ {
+ _parts = new CombinedObjectPart[_mesh.subMeshCount];
+ }
+ for (int i = 0; i < _sources.Length; i++)
+ {
+ CombineSource combineSource = new CombineSource(_mesh, _renderer, i);
+ _sources[i] = combineSource;
+ }
+ }
+
+ protected override IEnumerable<ICombineSource> GetCombineSources()
+ {
+ if (_sources == null)
+ {
+ yield break;
+ }
+ for (int i = 0; i < _sources.Length; i++)
+ {
+ CombineSource combineSource = _sources[i];
+ if (combineSource == null)
+ {
+ break;
+ }
+ yield return combineSource;
+ }
+ }
+
+ protected override IEnumerable<ICombinedObjectPart> GetCombinedParts()
+ {
+ if (_parts == null)
+ {
+ yield break;
+ }
+ for (int i = 0; i < _parts.Length; i++)
+ {
+ CombinedObjectPart combinedObjectPart = _parts[i];
+ if (combinedObjectPart == null)
+ {
+ break;
+ }
+ yield return combinedObjectPart;
+ }
+ }
+
+ protected override void ClearSources()
+ {
+ if (_sources != null)
+ {
+ for (int i = 0; i < _sources.Length; i++)
+ {
+ _sources[i] = null;
+ }
+ }
+ }
+
+ protected override void ClearParts()
+ {
+ if (_parts != null)
+ {
+ for (int i = 0; i < _parts.Length; i++)
+ {
+ _parts[i] = null;
+ }
+ }
+ }
+
+ protected override void ToggleComponents(bool enabled)
+ {
+ _renderer.enabled = enabled;
+ }
+}