예제 #1
0
        /// <summary>
        /// Adds the conveyor unit.
        /// </summary>
        public void AddConveyorUnit([NotNull] ConveyorUnit conveyorUnit, bool addToTop = false)
        {
            Assert.ArgumentNotNull(conveyorUnit, "conveyorUnit");

            foreach (var handledMessageType in conveyorUnit.HandledMessageTypes)
            {
                if (!ConveyorUnitsByMessageType.ContainsKey(handledMessageType))
                {
                    ConveyorUnitsByMessageType[handledMessageType] = new List <ConveyorUnit>();
                }

                if (addToTop)
                {
                    ConveyorUnitsByMessageType[handledMessageType].Insert(0, conveyorUnit);
                }
                else
                {
                    ConveyorUnitsByMessageType[handledMessageType].Add(conveyorUnit);
                }
            }

            foreach (var handledCommandType in conveyorUnit.HandledCommandTypes)
            {
                if (!ConveyorUnitsByCommandType.ContainsKey(handledCommandType))
                {
                    ConveyorUnitsByCommandType[handledCommandType] = new List <ConveyorUnit>();
                }

                if (addToTop)
                {
                    ConveyorUnitsByCommandType[handledCommandType].Insert(0, conveyorUnit);
                }
                else
                {
                    ConveyorUnitsByCommandType[handledCommandType].Add(conveyorUnit);
                }
            }
            if (addToTop)
            {
                _allConveyorUnits.Insert(0, conveyorUnit);
            }
            else
            {
                _allConveyorUnits.Add(conveyorUnit);
            }
        }
예제 #2
0
    IEnumerator ConveyorUnitProcessCoroutine()
    {
        GameObject   unitObj = Instantiate(SpawnUnit, StartGearTransform.position, Quaternion.identity, UnitContainerTransform);
        ConveyorUnit unit    = unitObj.GetComponent <ConveyorUnit>();

        ConveyorUnits.Add(unit);
        do
        {
            yield return(null);

            unit.totX = Vector3.Distance(EndGearTransform.position, StartGearTransform.position);
            unit.x   += Speed * Time.deltaTime;
            //unitObj.transform.position = Vector3.Lerp(StartGearTransform.position, EndGearTransform.position, unit.percent);
            //Vector3 dir= (EndGearTransform.position - StartGearTransform.position).normalized;
            unit.rigidbody.MovePosition(Vector3.Lerp(StartGearTransform.position, EndGearTransform.position, unit.percent));
        }while (unit.percent < 1f);
        ConveyorUnits.Remove(unit);
        Destroy(unitObj);
    }
예제 #3
0
        public Analyzer(IConfigurationProvider provider) : base(provider)
        {
            this.provider = provider;

            CommandExecutor = new CommandExecutor();
            TaskExecutor    = new TaskExecutor();

            Needle   = new NeedleUnit(CommandExecutor, provider);
            Conveyor = new ConveyorUnit(CommandExecutor, provider);
            Charger  = new ChargerUnit(CommandExecutor, provider);
            Rotor    = new RotorUnit(CommandExecutor, provider);
            Pomp     = new PompUnit(CommandExecutor, provider);

            CommunicationService = new ConnectionService();

            LoadConfiguration("AnalyzerServiceConfiguration");
            LoadUnitsConfiguration();

            SerialCommunicationInit();
            SerialCommunicationOpen();

            Logger.Debug("Запись работы системы начата");
        }