//-------------------------------------------------------------------------

        public static bool GetIsDependencyAllowed(Type dependant, Type dependency)
        {
            if (AllowedDependencies.ContainsKey(dependant))
            {
                return(AllowedDependencies[dependant].Contains(dependency));
            }

            return(false);
        }
        //-------------------------------------------------------------------------

        public static void AddAllowedDependency(Type dependant, Type dependency)
        {
            // Types must extend Entity class.
            if (dependant.IsSubclassOf(typeof(Entity)) == false ||
                dependency.IsSubclassOf(typeof(Entity)) == false)
            {
                throw new Exception("Dependant and dependency types must extend Entity.");
            }

            // First time a dependant of this type is used?
            if (AllowedDependencies.ContainsKey(dependant) == false)
            {
                AllowedDependencies.Add(
                    dependant,
                    new List <Type>());
            }

            // Add the dependency for the dependant.
            if (AllowedDependencies[dependant].Contains(dependency) == false)
            {
                AllowedDependencies[dependant].Add(dependency);
            }
        }