コード例 #1
0
        public void BuildDescriptors(string rootDirectory)
        {
            RootDirectory = rootDirectory;

            PluginDescriptors.Clear();

            LogSystem?.Print("Scanning for plugins in " + RootDirectory);

            if (!Directory.Exists(RootDirectory))
            {
                return;
            }

            var directories = Directory.GetDirectories(RootDirectory);

            foreach (string dir in directories)
            {
                var descriptor = FindDescriptorByDirectory(dir);

                if (descriptor != null)
                {
                    continue;
                }

                try
                {
                    descriptor = new SharpConfigDescriptor(dir);
                    PluginDescriptors.Add(descriptor);
                }
                catch (Exception e)
                {
                    LogSystem?.PrintWarning(e.ToString());
                }
            }
        }
コード例 #2
0
        public T GetData <T>() where T : IComponentData
        {
            var hash = typeof(T).GetHashCode();

            if (_data.ContainsKey(hash))
            {
                return((T)_data[hash]);
            }
            else
            {
                LogSystem.Print(AlertLevel.Error, "Actor", $"Not found {typeof(T).Name} component data");
            }
            return(default(T));
        }
コード例 #3
0
        private void OnChangeActiveStateComponent(ComponentActor beh, bool state)
        {
            var hash = beh.GetHashCode();

            if (_components.ContainsKey(hash))
            {
                var data = _components[hash];
                if (state)
                {
                    if (data.tick != null && !_ticks.Contains(data.tick))
                    {
                        _ticks.Add(data.tick);
                        _countTicks++;
                    }
                    if (data.tickFixed != null && !_ticksFixed.Contains(data.tickFixed))
                    {
                        _ticksFixed.Add(data.tickFixed);
                        _countTicksFixed++;
                    }
                    if (data.tickLate != null && !_ticksLate.Contains(data.tickLate))
                    {
                        _ticksLate.Add(data.tickLate);
                        _countTicksLate++;
                    }
                }
                else
                {
                    if (data.tick != null)
                    {
                        _ticks.Remove(data.tick);
                        _countTicks--;
                    }
                    if (data.tickFixed != null)
                    {
                        _ticksFixed.Remove(data.tickFixed);
                        _countTicksFixed--;
                    }
                    if (data.tickLate != null)
                    {
                        _ticksLate.Remove(data.tickLate);
                        _countTicksLate--;
                    }
                }
            }
            else
            {
                LogSystem.Print(AlertLevel.Error, "System", $"Cell for {beh.GetType().Name}:{hash} not found");
            }
        }