Node CreateNode(ActorSetup actorSetup)
        {
            var node = new Node();

            node.title         = actorSetup.DisplayName;
            node.capabilities |= Capabilities.Movable;
            node.name          = actorSetup.Id;
            node.userData      = actorSetup;
            node.SetPosition(new Rect(actorSetup.Position, Vector2.zero));

            var actorConfig = m_Asset.ActorConfigs.FirstOrDefault(x => x.Id == actorSetup.ConfigId);

            CreatePort(node.inputContainer, actorSetup.Inputs, actorConfig?.InputConfigs);
            CreatePort(node.outputContainer, actorSetup.Outputs, actorConfig?.OutputConfigs);

            if (actorSetup.IsRemoved)
            {
                node.mainContainer.style.backgroundColor = Color.red;
            }
            else if (actorSetup.HasSettingsTypeChanged)
            {
                node.mainContainer.style.backgroundColor = Color.cyan;
            }

            AddElement(node);

            return(node);
        }
Example #2
0
        public static void Connect <TComponent, TMessage>(this ActorSystemSetup actorSystemSetup,
                                                          ActorSetup outputActorSetup, ActorSetup inputActorSetup)
        {
            var componentConfig = actorSystemSetup.GetComponentConfig <TComponent>();
            var messageTypeName = typeof(TMessage).ToString();

            var outputActorConfig = actorSystemSetup.GetActorConfig(outputActorSetup);
            var inputActorConfig  = actorSystemSetup.GetActorConfig(inputActorSetup);

            var outputPortConfig = outputActorConfig.OutputConfigs.First(x =>
                                                                         x.ComponentConfigId == componentConfig.Id && x.MessageTypeNormalizedFullName == messageTypeName);
            var inputPortConfig = inputActorConfig.InputConfigs.First(x =>
                                                                      x.ComponentConfigId == componentConfig.Id && x.MessageTypeNormalizedFullName == messageTypeName);

            var outputPort = outputActorSetup.Outputs.First(x => x.ConfigId == outputPortConfig.Id);
            var inputPort  = inputActorSetup.Inputs.First(x => x.ConfigId == inputPortConfig.Id);

            var link = new ActorLink(outputPort.Id, inputPort.Id, false);

            outputPort.Links.Add(link);
            inputPort.Links.Add(link);
        }
Example #3
0
 public static void ConnectRpc <T>(this ActorSystemSetup actorSystemSetup,
                                   ActorSetup outputActorSetup, ActorSetup inputActorSetup)
 {
     actorSystemSetup.Connect <RpcComponent, T>(outputActorSetup, inputActorSetup);
 }
Example #4
0
 public static T GetActorSettings <T>(this ActorSetup actorSetup) where T : ActorSettings => (T)actorSetup.Settings;
Example #5
0
 public static ActorConfig GetActorConfig(this ActorSystemSetup actorSystemSetup, ActorSetup actorSetup) =>
 actorSystemSetup.ActorConfigs.First(x => x.Id == actorSetup.ConfigId);