From 8e13e7e2874adc8982e16d1d2ed2e28d7480b45f Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Sun, 19 May 2024 16:05:58 +0800 Subject: +1.57 --- .../NGS.MeshFusionPro/StaticMeshFusionSource.cs | 131 +++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs (limited to 'Thronefall_1_57/Decompile/NGS.MeshFusionPro/StaticMeshFusionSource.cs') 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 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 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; + } +} -- cgit v1.1-26-g67d0