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);
        }
Example #2
0
        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();
        }
Example #3
0
 public EngineInstance OpenInNew(string title, ComponentFunction func)
 {
     return(OpenInNew(title, (e) => new IComponent[] { func(e) }));
 }
Example #4
0
 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) });
 }