diff options
| author | chai <215380520@qq.com> | 2024-05-19 16:05:58 +0800 |
|---|---|---|
| committer | chai <215380520@qq.com> | 2024-05-19 16:05:58 +0800 |
| commit | 8e13e7e2874adc8982e16d1d2ed2e28d7480b45f (patch) | |
| tree | 63ef85c460288891f5a593d69afeca16cba050b3 /Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs | |
| parent | c5f145786f4c6d2fe4bea831dfc16e52228920a5 (diff) | |
+1.57
Diffstat (limited to 'Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs')
| -rw-r--r-- | Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs | 131 |
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; + } +} |
