IActorComponent FindActorComponent(ActorID id)
        {
            IActorComponent actor = null;

            _usedActorIDs.TryGetValue(id.Value, out actor);
            return(actor);
        }
Example #2
0
        public void AddComponent(IActorComponent actorComponent)
        {
            if (actorComponent == null)
            {
                return;
            }

            if (GetActorComponent(actorComponent.GetType()) != null)
            {
                Log.W("Already Add Component:" + name);
                return;
            }

            mComponentList.Add(actorComponent);

            mComponentsNameList.Add(actorComponent.GetType().Name);

            mComponentList.Sort(ComWrapComparison);

            OnAddComponent(actorComponent);

            if (mHasAwake)
            {
                AwakeCom(actorComponent);
            }

            if (mHasStart)
            {
                StartComponent(actorComponent);
            }
        }
Example #3
0
        public ComponentUIObject(IActorComponent target, IUIObject?parent, IViewModel model)
        {
            _target     = target;
            _parent     = parent;
            DataContext = model;

            _target.Unloaded.Subscribe(_ => ControlUnload?.Invoke());
        }
Example #4
0
        public void RemoveComponent(IActorComponent actorComponent)
        {
            int index = mComponentList.FindIndex(component => component == actorComponent);

            mComponentList.RemoveAt(index);
            mComponentsNameList.RemoveAt(index);
            OnRemoveComponent(actorComponent);
            DestroyComponent(actorComponent);
        }
        ActorID GetFactoryID(IActorComponent actor)
        {
            //first check to see if the usedIDs dictionary contains this actor already
            //and if so, just return the id already assigned
            if (_usedActorIDs.ContainsValue(actor))
            {
                return(new ActorID(_usedActorIDs.First(x => x.Value == actor).Key, actor.GetName()));
            }

            //spin-up a unique ulong based on the specifics of this gameobject
            return(HashIDForActor(actor));
        }
 void ForceActorFromLoad(IActorComponent actor)
 {
     if (_usedActorIDs.ContainsKey(actor.GetID().Value))
     {
         //this is perfectly valid, we may have just reloaded an actor we already knew the ID for, now we know this instance of same actor
         _usedActorIDs[actor.GetID().Value] = actor;
     }
     else
     {
         _usedActorIDs.Add(actor.GetID().Value, actor);
     }
 }
Example #7
0
        /// <summary>
        /// Creates a proxy for an actor component object and places it in an existing actor
        /// </summary>
        internal CreatorInterfaceInvocationHandler(ObjectCreator <IActorComponent> creator, IActor rootObject, ProxyFactory proxyFactory)
        {
            // We need to lock on the root when using an existing actor
            ThreadPool.QueueUserWorkItem(
                delegate
            {
                Hooking.ActorCallWrapper(() =>
                {
                    IActorComponent newObject            = creator();
                    ActorInterfaceInvocationHandler temp = new ActorInterfaceInvocationHandler(newObject, rootObject, proxyFactory);

                    m_RealInvocationHandler = temp;
                    m_FinishedEvent.Set();
                });
            });
        }
Example #8
0
        protected override void OnAddComponent(IActorComponent actorComponent)
        {
            if (actorComponent is IModule)
            {
                IModule module = actorComponent as IModule;
                string  name   = module.GetType().Name;
                if (mModuleMgrMap.ContainsKey(name))
                {
                    Log.E("ModuleMgr Already Add Module:" + name);
                    return;
                }
                mModuleMgrMap.Add(name, module);

                OnModuleRegister(module);
            }
        }
Example #9
0
        public void RemoveComponent <T>() where T : IActorComponent
        {
            for (int i = mComponentList.Count - 1; i >= 0; --i)
            {
                if (mComponentList[i] is T)
                {
                    IActorComponent actorComponent = mComponentList[i];

                    mComponentList.RemoveAt(i);
                    mComponentsNameList.RemoveAt(i);
                    OnRemoveComponent(actorComponent);

                    DestroyComponent(actorComponent);
                    return;
                }
            }
        }
Example #10
0
        // openActorProperties
        public void openActorProperties(IActorComponent component, bool closeOpenedProperties = true)
        {
            if (closeOpenedProperties)
            {
                closeActorProperties();
            }

            ActorPropertiesView actorProperties = new ActorPropertiesView(component);

            actorProperties.Dock = DockStyle.Top;
            _actorPropertiesViews.Add(actorProperties);
            mainSplit.Panel1.Controls.Add(actorProperties);
            actorProperties.BringToFront();

            /*
             * foreach (ActorProperties p in properties)
             * {
             *  ActorPropertiesView view = new ActorPropertiesView(p);
             *  actorPropertiesViews.Add(view);
             *  mainSplit.Panel1.Controls.Add(view);
             *  view.BringToFront();
             * }
             */
        }
Example #11
0
 protected virtual void OnRemoveComponent(IActorComponent actorComponent)
 {
 }
Example #12
0
 protected virtual void OnAddComponent(IActorComponent actorComponent)
 {
 }
Example #13
0
 private int ComWrapComparison(IActorComponent a, IActorComponent b)
 {
     return(a.ComponentOrder.CompareTo(b.ComponentOrder));
 }
Example #14
0
 protected void DestroyComponent(IActorComponent wrap)
 {
     wrap.DestroyComponent();
 }
Example #15
0
 protected void StartComponent(IActorComponent wrap)
 {
     wrap.OnComponentStart();
 }
Example #16
0
 protected void AwakeCom(IActorComponent wrap)
 {
     wrap.AwakeComponent(this);
 }
        //public Actor ActorPrefab;

        public ActorID GetIDHackHackHack(IActorComponent actor)
        {
            return(GetFactoryID(actor));
        }
Example #18
0
 // openActorProperties
 public void openActorProperties(IActorComponent component, bool closeOpenedProperties = true)
 {
     _editorView.openActorProperties(component, closeOpenedProperties);
 }
Example #19
0
 public EventActorLoaded(IActorComponent actor)
 {
     _actor = actor;
 }
 public ActorPropertiesView(IActorComponent component)
 {
     InitializeComponent();
     actorPropertyGrid.SelectedObject = component;
     Dock = DockStyle.Top;
 }
 public void SetActor(IActorComponent component)
 {
     _foundActorComponent = component;
 }
Example #22
0
 // openActorProperties
 public void openActorProperties(IActorComponent component, bool closeOpenedProperties = true)
 {
     _editorView.openActorProperties(component, closeOpenedProperties);
 }
 public ActorPropertiesView(IActorComponent component)
 {
     InitializeComponent();
     actorPropertyGrid.SelectedObject = component;
     Dock = DockStyle.Top;
 }
Example #24
0
        // openActorProperties
        public void openActorProperties(IActorComponent component, bool closeOpenedProperties = true)
        {
            if (closeOpenedProperties)
                closeActorProperties();

            ActorPropertiesView actorProperties = new ActorPropertiesView(component);
            actorProperties.Dock = DockStyle.Top;
            _actorPropertiesViews.Add(actorProperties);
            mainSplit.Panel1.Controls.Add(actorProperties);
            actorProperties.BringToFront();
            /*
            foreach (ActorProperties p in properties)
            {
                ActorPropertiesView view = new ActorPropertiesView(p);
                actorPropertiesViews.Add(view);
                mainSplit.Panel1.Controls.Add(view);
                view.BringToFront();
            }
            */
        }
 public Data(IActorComponent component)
 {
     _component = component;
 }
 ActorID HashIDForActor(IActorComponent component)
 {
     //we assume that only MonoBehaviours implement IActor
     return(HashIDForMonoBehaviour(component as MonoBehaviour));
 }