IActorComponent FindActorComponent(ActorID id) { IActorComponent actor = null; _usedActorIDs.TryGetValue(id.Value, out actor); return(actor); }
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); } }
public ComponentUIObject(IActorComponent target, IUIObject?parent, IViewModel model) { _target = target; _parent = parent; DataContext = model; _target.Unloaded.Subscribe(_ => ControlUnload?.Invoke()); }
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); } }
/// <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(); }); }); }
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); } }
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; } } }
// 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(); * } */ }
protected virtual void OnRemoveComponent(IActorComponent actorComponent) { }
protected virtual void OnAddComponent(IActorComponent actorComponent) { }
private int ComWrapComparison(IActorComponent a, IActorComponent b) { return(a.ComponentOrder.CompareTo(b.ComponentOrder)); }
protected void DestroyComponent(IActorComponent wrap) { wrap.DestroyComponent(); }
protected void StartComponent(IActorComponent wrap) { wrap.OnComponentStart(); }
protected void AwakeCom(IActorComponent wrap) { wrap.AwakeComponent(this); }
//public Actor ActorPrefab; public ActorID GetIDHackHackHack(IActorComponent actor) { return(GetFactoryID(actor)); }
// openActorProperties public void openActorProperties(IActorComponent component, bool closeOpenedProperties = true) { _editorView.openActorProperties(component, closeOpenedProperties); }
public EventActorLoaded(IActorComponent actor) { _actor = actor; }
public ActorPropertiesView(IActorComponent component) { InitializeComponent(); actorPropertyGrid.SelectedObject = component; Dock = DockStyle.Top; }
public void SetActor(IActorComponent component) { _foundActorComponent = component; }
// 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)); }