MD Package Technical & APi Documentation
MDM_MeshSlime :: MD_ModifierBase
Namespace: MDPackage.Modifiers
Interactive soft 'slime' modifier with advanced settings. Contains a simple input-hookups.

The input is not handled by default, as the Unity Engine has many options for handling input and controls in general.
MD-Package components that contain some input features consist of 'Input Hookup' properties that handle the input in a generic way.
You can set these properties from your own input system. The component will display more information about the input setup, so please follow up on this information.
You can find all the input-hookup properties below.
Read more here (Online documentation slide)
Public Methods
// Modify mesh on the specific world point with current mesh slime settings
public void MeshSlime_ModifyMesh(Vector3 worldPoint)
// Modify mesh by the specific RaycastEvent with current mesh slime settings
public void MeshSlime_ModifyMesh(MDM_RaycastEvent entry)
Public Fields
public bool useControls = true; // If enabled, the passed input hookups will be processed
public Camera mainCameraInstance;

public DragAxisType dragAxisType = DragAxisType.Y_Only; // Y_Only, TowardsObjectsPivot, CrossProduct, NormalsDirection

public bool restore = false;
public float restorationSpeed = 1f;

public float mainRadius = 0.1f;
[Range(0.01f, 1.0f)] public float mainFalloff = 1.0f;
public float mainIntensity = 0.1f;

public bool reverseDrag = false;
public float dragValue = 0.16f;
[Range(0.01f, 1.0f)] public float dragFalloff = 0.8f;
public float maxDragSpeed = 0.5f;
Examples
The following paragraphs contain Mesh Slime modifier used in a practical example. Hence the custom input handling.
using UnityEngine;
using MDPackage.Modifiers;

[RequireComponent(typeof(MeshFilter))]
public class SampleScript : MonoBehaviour
{
// Cache main camera in the inspector!
public Camera mainCam;

private MDM_MeshSlime slime;

private void Start()
 {
  // Add/Create a Mesh Slime modifier to this object right after start
  slime = gameObject.AddComponent<MDM_MeshSlime>();
  // Enable useNormalSmoothingAngle for 'smoother' looking normals + other params
  slime.useNormalSmoothingAngle = true;
  slime.restore = true;
  slime.mainRadius = 0.15f;
  // Add mesh collider for raycast detection
  gameObject.AddComponent<MDPackage.MD_MeshColliderRefresher>();
 }

private void Update()
 {
  // Main camera must be initialized
  if (!mainCam || !slime)
   return;

  // Additional extensions for mesh
  // If Space is pressed, subdivide mesh if possible
  if (Input.GetKeyDown(KeyCode.Space))
   slime.MDModifier_SubdivideMesh();
  // If S is pressed, smooth mesh
  if (Input.GetKeyDown(KeyCode.S))
   slime.MDModifier_SmoothMesh();
  // If R is pressed, restore mesh
  if (Input.GetKeyDown(KeyCode.R))
   slime.MDModifier_RestoreMesh();

  // Mesh Slime modifier has already a built-in raycast detection, all is left is the input. Pass the input via Input-Hookups:

  slime.InputHook_CursorScreenPosition = Input.mousePosition;
  slime.InputHook_GenericButtonDown = Input.GetKey(KeyCode.Mouse0);
 }
}