Namespace: MDPackage.Modifiers
Base modifier class for all the modifier instances. Implement this base class to any script that should behave like a 'mesh-modifier'.
Please read the APi below carefully as the setup for classes that inherit from this base class is slightly different.
Properties
public bool MbIsInitialized { get; }
public bool MbMultithreadedModifier { get; }
public Thread ThreadInstance { get; }
public ManualResetEvent ThreadEvent { get; protected set; }
public bool MbUseModifierMeshFeatures = true;
public MbMeshData MbInitialMeshData { get; }
public MbMeshData MbBackupMeshData { get; }
public MbMeshData MbWorkingMeshData { get; }
public Action OnModifierInitialized;
public event Action OnMeshRestored;
public event Action OnMeshBaked;
public event Action OnMeshSubdivided;
public event Action OnMeshSmoothed;
public event Action OnNewMeshReferenceCreated;
Public Methods
public static T CreateModifier<T>(GameObject entry, MeshReferenceType meshReferenceType)
protected void MDModifier_InitializeWorkingMeshData(MbMeshData workingMeshData)
public void MDModifier_ClearInitialMeshData()
public void MDModifier_ClearBackupMeshData()
public void MDModifier_ClearWorkingMeshData()
protected virtual void MDModifier_InitializeBase(MeshReferenceType meshReferenceType = MeshReferenceType.GetFromPreferences, bool forceInitialization = false, bool affectUpdateEveryFrameField = true)
protected virtual void MDModifier_InitializeMeshData(bool initialMeshData = true, bool backupMeshData = true, bool workingMeshData = true)
public abstract void MDModifier_ProcessModifier();
public void MDModifier_RestoreMesh()
public void MDModifier_SubdivideMesh(SubdivisionLevel level = SubdivisionLevel.x2)
public void MDModifier_SmoothMesh(float intensity = 0.5f)
public void MDModifier_BakeMesh(bool forceInitialMeshData = false, bool forceBackupMeshData = false, bool forceWorkingMeshData = false)
public void MDModifier_CreateNewMeshReference(string meshName = "")
public virtual void MDModifierThreading_StartThread(string threadName = "DefaultMDThread")
public virtual void MDModifierThreading_StopThread()
Example Implementation
All the modifiers that inherit from this base class must be initialized in a certain way.
You can either simply call gameObject.AddComponent() or call a static method MD_ModifierBase.CreateModifier(Advanced data...).
using UnityEngine;
using MDPackage.Modifiers;
public class SampleScript : MonoBehaviour
{
private MDM_Bend modifier;
private void Start()
{
modifier = MD_ModifierBase.CreateModifier<MDM_Bend>(gameObject, MD_ModifierBase.MeshReferenceType.GetFromPreferences);
}
}