Ejemplo n.º 1
0
        /// <summary>
        /// Default initialization of datanode. Will trigger initialization routines of
        /// all encountered DataNodes in children. Will register all direct ValueUpdateReceivers.
        /// </summary>
        /// <param name="dataNode"></param>
        /// <param name="rootObject">Where the gameobject tree search should originate from.</param>
        /// <param name="searchRootItself">If true, also considers the root gameobject for the search.</param>
        public static void DefaultInitialize(this IDataNode dataNode, GameObject rootObject, bool searchRootItself = false)
        {
            List <IBindableComponent> bindableComponents = new List <IBindableComponent>();
            List <IDataNode>          dataNodes          = new List <IDataNode>();

            SearchViewInterfaces(rootObject, ref bindableComponents, ref dataNodes, searchRootItself);

            List <IValueUpdateReceiver> valueUpdateReceivers = new List <IValueUpdateReceiver>();

            foreach (IBindableComponent bc in bindableComponents)
            {
                bc.InitializeBindableComponent();
                valueUpdateReceivers.AddRange(bc.GetValueUpdateReceivers());
            }
            foreach (IDataNode dn in dataNodes)
            {
                valueUpdateReceivers.Add(dn as IValueUpdateReceiver);
            }
            foreach (IValueUpdateReceiver vur in valueUpdateReceivers)
            {
                vur.Context = dataNode;
            }
            foreach (IDataNode dn in dataNodes)
            {
                dn.InitializeDataNode();
            }
            dataNode.RegisterUpdateReceivers(valueUpdateReceivers);
        }