Namespace: MDPackage.Modifiers
Modify mesh vertices by surface height or fit mesh to any collider.
Great time saver for creating environmental decals!
Read more here (Online documentation slide)
Properties
public MeshFitterMode CurrentMeshFitterMode { get; }
public float MeshFitterOffset { get; set; }
public float MeshFitterSurfaceDetection { get; set; }
public bool MeshFitterContinuousEffect { get; set; }
public Transform[] GeneratedPoints { get; }
public GameObject[] SelectedPoints { get; }
Public Methods
public void MeshFit_ShowHidePoints(bool activation)
public void MeshFit_GeneratePoints()
public void MeshFit_ClearPoints()
public void MeshFit_BakeMesh()
public void MeshFit_UpdateMeshState()
public void MeshFit_RefreshSelectedPointsState()
Examples
The following paragraphs contain Mesh Fit modifier component used in a practical example - add and control Mesh Fit modifier on a specific gameObject.
using UnityEngine;
using MDPackage.Modifiers;
[RequireComponent(typeof(MeshFilter))]
public class SampleScript : MonoBehaviour
{
private MDM_MeshFit fit;
private void Start()
{
fit = MD_ModifierBase.CreateModifier<MDM_MeshFit>(gameObject, MD_ModifierBase.MeshReferenceType.CreateNewReference);
fit.MeshFit_BakeMesh();
fit.MeshFit_GeneratePoints();
if (TryGetComponent<Collider>(out Collider c))
Object.Destroy(c);
}
}
Mesh Fit with selected points - selected points are received from checking the lowest position among the generated points.
using System.Collections.Generic;
using UnityEngine;
using MDPackage.Modifiers;
[RequireComponent(typeof(MeshFilter))]
public class SampleScript : MonoBehaviour
{
private MDM_MeshFit fit;
private void Start()
{
fit = MD_ModifierBase.CreateModifier<MDM_MeshFit>(gameObject, MD_ModifierBase.MeshReferenceType.CreateNewReference);
fit.MeshFit_BakeMesh();
fit.MeshFit_GeneratePoints();
if (TryGetComponent<Collider>(out Collider c))
Object.Destroy(c);
fit.CurrentMeshFitterMode = MDM_MeshFit.MeshFitterMode.FitSpecificVertices;
List<GameObject> selPoints = new List<GameObject>();
foreach (var p in fit.GeneratedPoints)
{
if (p.localPosition.y <= -0.35f)
selPoints.Add(p.gameObject);
}
fit.MeshFit_SetSelectedPoints(selPoints.ToArray());
fit.MeshFit_RefreshSelectedPointsState();
}
}