A game about forced loneliness, made by TACStudios
1using System; 2 3namespace Unity.VisualScripting 4{ 5 public abstract class Cloner<T> : ICloner 6 { 7 protected Cloner() { } 8 9 public abstract bool Handles(Type type); 10 11 void ICloner.BeforeClone(Type type, object original) 12 { 13 BeforeClone(type, (T)original); 14 } 15 16 public virtual void BeforeClone(Type type, T original) { } 17 18 object ICloner.ConstructClone(Type type, object original) 19 { 20 return ConstructClone(type, (T)original); 21 } 22 23 public virtual T ConstructClone(Type type, T original) 24 { 25 return (T)Activator.CreateInstance(type, true); 26 } 27 28 void ICloner.FillClone(Type type, ref object clone, object original, CloningContext context) 29 { 30 var _instance = (T)clone; 31 FillClone(type, ref _instance, (T)original, context); 32 clone = _instance; 33 } 34 35 public virtual void FillClone(Type type, ref T clone, T original, CloningContext context) { } 36 37 void ICloner.AfterClone(Type type, object clone) 38 { 39 AfterClone(type, (T)clone); 40 } 41 42 public virtual void AfterClone(Type type, T clone) { } 43 } 44}