summaryrefslogtreecommitdiff
path: root/Thronefall_1_57/Decompile/NGS.MeshFusionPro/CombinedObject.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2024-05-19 17:03:57 +0800
committerchai <215380520@qq.com>2024-05-19 17:03:57 +0800
commitcf58771365b5953c6eac548b172aae880d1f0acd (patch)
treea49757a4b5c447cbf877584d482367a6bfe33b10 /Thronefall_1_57/Decompile/NGS.MeshFusionPro/CombinedObject.cs
parenteed315deae356ddfb17f28305e7cde6cdfc43313 (diff)
* rename
Diffstat (limited to 'Thronefall_1_57/Decompile/NGS.MeshFusionPro/CombinedObject.cs')
-rw-r--r--Thronefall_1_57/Decompile/NGS.MeshFusionPro/CombinedObject.cs209
1 files changed, 0 insertions, 209 deletions
diff --git a/Thronefall_1_57/Decompile/NGS.MeshFusionPro/CombinedObject.cs b/Thronefall_1_57/Decompile/NGS.MeshFusionPro/CombinedObject.cs
deleted file mode 100644
index 5a7bc43..0000000
--- a/Thronefall_1_57/Decompile/NGS.MeshFusionPro/CombinedObject.cs
+++ /dev/null
@@ -1,209 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using UnityEngine;
-
-namespace NGS.MeshFusionPro;
-
-public class CombinedObject : MonoBehaviour, ICombinedObject<CombinedObjectPart, CombineSource>, ICombinedObject
-{
- private CombinedMesh _combinedMesh;
-
- private CombinedMeshDataInternal _meshData;
-
- private List<CombinedObjectPart> _parts;
-
- private List<CombinedMeshPart> _destroyedMeshParts;
-
- private RendererSettings _rendererSettings;
-
- private bool _updating;
-
- IReadOnlyList<ICombinedObjectPart> ICombinedObject.Parts => _parts;
-
- public IReadOnlyList<CombinedObjectPart> Parts => _parts;
-
- public RendererSettings RendererSettings => _rendererSettings;
-
- public Bounds Bounds
- {
- get
- {
- Bounds localBounds = LocalBounds;
- localBounds.center += base.transform.position;
- return localBounds;
- }
- }
-
- public Bounds LocalBounds => _combinedMesh.MeshData.GetBounds();
-
- public int VertexCount => _combinedMesh.MeshData.VertexCount;
-
- public bool Updating
- {
- get
- {
- return _updating;
- }
- set
- {
- _updating = value;
- base.enabled = value;
- }
- }
-
- private void Update()
- {
- if (!Updating)
- {
- base.enabled = false;
- return;
- }
- ForceUpdate();
- base.enabled = false;
- }
-
- private void OnDestroy()
- {
- _combinedMesh.Dispose();
- }
-
- public static CombinedObject Create(MeshType meshType, CombineMethod combineType, RendererSettings settings)
- {
- return Create(new CombinedMeshFactory(meshType, combineType), settings);
- }
-
- public static CombinedObject Create(ICombinedMeshFactory factory, RendererSettings settings)
- {
- return Create(factory.CreateCombinedMesh(), settings);
- }
-
- public static CombinedObject Create(CombinedMesh combinedMesh, RendererSettings settings)
- {
- CombinedObject combinedObject = new GameObject("Combined Object").AddComponent<CombinedObject>();
- combinedObject.Construct(combinedMesh, settings);
- return combinedObject;
- }
-
- private void Construct(CombinedMesh combinedMesh, RendererSettings settings)
- {
- _combinedMesh = combinedMesh;
- _meshData = (CombinedMeshDataInternal)_combinedMesh.MeshData;
- _parts = new List<CombinedObjectPart>();
- _destroyedMeshParts = new List<CombinedMeshPart>();
- _rendererSettings = settings;
- _updating = true;
- if (combinedMesh.MeshData.PartsCount > 0)
- {
- foreach (CombinedMeshPart part in combinedMesh.MeshData.GetParts())
- {
- _parts.Add(new CombinedObjectPart(this, part));
- }
- }
- CreateMeshFilter(_combinedMesh.Mesh);
- CreateMeshRenderer(settings);
- }
-
- public void ForceUpdate()
- {
- if (_destroyedMeshParts.Count > 0)
- {
- _combinedMesh.Cut(_destroyedMeshParts);
- _destroyedMeshParts.Clear();
- }
- }
-
- public Bounds GetLocalBounds(CombinedObjectPart part)
- {
- return _meshData.GetBounds(part.MeshPart);
- }
-
- public Bounds GetBounds(CombinedObjectPart part)
- {
- Bounds localBounds = GetLocalBounds(part);
- localBounds.center += base.transform.position;
- return localBounds;
- }
-
- public void Combine(IEnumerable<ICombineSource> sources)
- {
- Combine(sources.Select((ICombineSource s) => (CombineSource)s));
- }
-
- public void Combine(IEnumerable<CombineSource> sources)
- {
- if (_parts.Count == 0)
- {
- base.transform.position = GetAveragePosition(sources);
- }
- Vector3 position = base.transform.position;
- int num = sources.Count();
- int num2 = 0;
- MeshCombineInfo[] array = new MeshCombineInfo[num];
- foreach (CombineSource source in sources)
- {
- MeshCombineInfo combineInfo = source.CombineInfo;
- combineInfo.transformMatrix = combineInfo.transformMatrix.SetTranslation(source.Position - position);
- array[num2++] = combineInfo;
- }
- try
- {
- CombinedMeshPart[] array2 = _combinedMesh.Combine(array);
- num2 = 0;
- foreach (CombineSource source2 in sources)
- {
- CombinedObjectPart combinedObjectPart = new CombinedObjectPart(this, array2[num2]);
- _parts.Add(combinedObjectPart);
- source2.Combined(this, combinedObjectPart);
- num2++;
- }
- }
- catch (Exception ex)
- {
- string errorMessage = ex.Message + ex.StackTrace;
- foreach (CombineSource source3 in sources)
- {
- source3.CombineError(this, errorMessage);
- source3.CombineFailed(this);
- }
- }
- }
-
- public void Destroy(CombinedObjectPart part)
- {
- if (_parts.Remove(part))
- {
- _destroyedMeshParts.Add(part.MeshPart);
- base.enabled = true;
- }
- }
-
- private void CreateMeshFilter(Mesh mesh)
- {
- base.gameObject.AddComponent<MeshFilter>().sharedMesh = mesh;
- }
-
- private void CreateMeshRenderer(RendererSettings settings)
- {
- MeshRenderer meshRenderer = base.gameObject.AddComponent<MeshRenderer>();
- meshRenderer.sharedMaterial = settings.material;
- meshRenderer.shadowCastingMode = settings.shadowMode;
- meshRenderer.receiveShadows = settings.receiveShadows;
- meshRenderer.lightmapIndex = settings.lightmapIndex;
- meshRenderer.realtimeLightmapIndex = settings.realtimeLightmapIndex;
- meshRenderer.tag = settings.tag;
- meshRenderer.gameObject.layer = settings.layer;
- }
-
- private Vector3 GetAveragePosition(IEnumerable<CombineSource> sources)
- {
- Vector3 zero = Vector3.zero;
- int num = 0;
- foreach (CombineSource source in sources)
- {
- zero += source.Position;
- num++;
- }
- return zero / num;
- }
-}