public static T GetClosestMatchingComponent <T>(Vector3 position, ComponentFunction matchFunction) where T : Component { T[] objects = Object.FindObjectsOfType <T>(); float dist = float.MaxValue; int closestIndex = -1; for (int i = 0; i < objects.Length; i++) { if (!matchFunction(objects[i])) { continue; } Vector3 objectPos = objects[i].transform.position; float newDist = new Vector3(position.x - objectPos.x, position.y - objectPos.y, position.z - objectPos.z).sqrMagnitude; if (newDist < dist) { dist = newDist; closestIndex = i; } } if (closestIndex != -1) { return(objects[closestIndex]); } return(null); }
static void Main(string[] args) { Human obj = new Man(); obj.Walk(); Human obj1 = new Human(); obj1.Walk(); Console.ReadKey(); //Runtime Polymorphism BaseFunction x = new ComponentFunction <ComponentReference>(); x.Execute(); x = new DependentComponentFunction <DependentCompReference>(); x.Execute(); x = new BaseCustomFunction <CustomReference>(); x.Execute(); Console.ReadKey(); }
public EngineInstance OpenInNew(string title, ComponentFunction func) { return(OpenInNew(title, (e) => new IComponent[] { func(e) })); }
public EngineInstance ReplaceInLast(string title, ComponentFunction func) { return(ReplaceInLast(title, (e) => new IComponent[] { func(e) })); }
public EngineInstance ReplaceInLast(string title, ComponentFunction func) { return ReplaceInLast(title, (e) => new IComponent[] { func(e) }); }
public EngineInstance OpenInNew(string title, ComponentFunction func) { return OpenInNew(title, (e) => new IComponent[] { func(e) }); }