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}