示例#1
0
        public void Initialize()
        {
            IsOwner = ReferenceEquals(Source, null);

            // make this a bit faster
            Behaviours = UnityObject.GetComponentsInChildren(typeof(IEntityBehaviour)).Select(x => x as IEntityBehaviour).Where(x => x != null).ToArray();

            // assign usertokens
            UnityObject.entity = this;

            // try to find a priority calculator
            var calculators = UnityObject.GetComponentsInChildren(typeof(IPriorityCalculator), true);

            foreach (IPriorityCalculator calculator in calculators)
            {
                var parent = ((MonoBehaviour)(object)calculator).GetComponentInParent <AscensionEntity>();

                if (parent && ReferenceEquals(parent.entity, this))
                {
                    PriorityCalculator = calculator;
                    break;
                }
            }

            // use the default priority calculator if none is available
            if (PriorityCalculator == null)
            {
                PriorityCalculator = this;
            }

            // find replication filter
            var filters = UnityObject.GetComponentsInChildren(typeof(IEntityReplicationFilter), true);

            foreach (IEntityReplicationFilter filter in filters)
            {
                var parent = ((MonoBehaviour)(object)filter).GetComponentInParent <AscensionEntity>();

                if (parent && ReferenceEquals(parent.entity, this))
                {
                    ReplicationFilter = filter;
                    break;
                }
            }

            // use the default replication filter if none is available
            if (ReplicationFilter == null)
            {
                ReplicationFilter = this;
            }

            // call into serializer
            Serializer.OnInitialized();

            // call to behaviours (this happens BEFORE attached)
            foreach (IEntityBehaviour eb in Behaviours)
            {
                eb.Initialized();
            }
        }