コード例 #1
0
ファイル: PluginManagerTest.cs プロジェクト: ZHJEE/OpenTAP
        public void MemorizerTest()
        {
            var times = Enumerable.Range(1, 4).Select(i =>
            {
                Memorizer <double, double, double> mem = new Memorizer <double, double, double>(d => modf(d, Math.PI), Math.Sin);
                var timer  = Stopwatch.StartNew();
                var output = Enumerable.Range(0, (int)Math.Pow(3, i))
                             .Select(i2 => i2 / 20.0)
                             .Select(mem.Invoke).ToList();
                return(timer.Elapsed);
            }).ToList();


            var times2 = Enumerable.Range(1, 4).Select(i =>
            {
                //Memorizer<double, double, double> mem = new Memorizer<double, double, double>(d => modf(d, Math.PI), Math.Sin);
                var timer  = Stopwatch.StartNew();
                var output = Enumerable.Range(0, (int)Math.Pow(3, i))
                             .Select(i2 => i2 / 20.0)
                             .Select(Math.Sin).ToList();
                return(timer.Elapsed);
            }).ToList();

            Debug.WriteLine(times);
            Debug.WriteLine(times2);
        }
コード例 #2
0
ファイル: Bullet.cs プロジェクト: Jaysae/2D-Fantasy
 private void Start()
 {
     StartCoroutine(Lost());
     _animator    = transform.GetComponent <Animator>();
     _rigidbody2D = transform.GetComponent <Rigidbody2D>();
     _memorizer   = GameObject.Find("Memorizer").GetComponent <Memorizer>();
 }
コード例 #3
0
ファイル: PluginManagerTest.cs プロジェクト: ZHJEE/OpenTAP
        public void MemorizerThreadTest()
        {
            List <Task> tasks = new List <Task>();

            // Testing a very short operation in the memorizer
            // With a relatively short running tasks to test if we can break the internals of the memorizer.

            var numberThingTest = new Memorizer <int, int>(thing => thing % 25)
            {
                MaxNumberOfElements = 25, SoftSizeDecayTime = TimeSpan.MaxValue
            };
            var numberRevertThingTest = new Memorizer <int, int>(thing => - thing)
            {
                MaxNumberOfElements = 25, SoftSizeDecayTime = TimeSpan.MaxValue
            };

            for (int i = 0; i < 10; i++)
            {
                int _i = i;
                tasks.Add(Task.Factory.StartNew(() =>
                {
                    for (int j = 0; j < 1000; j++)
                    {
                        var value1 = numberThingTest.Invoke((_i + j) % 71); // ensure collision of keys.
                        var value2 = numberRevertThingTest.Invoke(value1);
                        Assert.IsTrue(value2 == -(((_i + j) % 71) % 25));   // check calculation.
                    }
                }));
            }

            Task.WhenAll(tasks).Wait();
            Task.WaitAll(tasks.ToArray());
        }
コード例 #4
0
ファイル: PlayerMove.cs プロジェクト: Jaysae/2D-Fantasy
 private void Awake()
 {
     _controller = GetComponent <CharacterController2D>();
     _playerInfo = GetComponent <PlayerInfo>();
     InAim       = false;
     _animator   = GetComponent <Animator>();
     _memorizer  = GameObject.Find("Memorizer").GetComponent <Memorizer>();
 }
コード例 #5
0
 public void ShouldHandlFetchCmd(string cmdText, bool isValid, int numResponses)
 {
     Memorizer.Tell(new MessageMemorizerActor.Message("foo1", DateTime.UtcNow, "any"));
     Memorizer.Tell(new MessageMemorizerActor.Message("foo2", DateTime.UtcNow.AddMinutes(1), "any"));
     Memorizer.Tell(new MessageMemorizerActor.Message("foo3", DateTime.UtcNow.AddMinutes(5), "any"));
     Memorizer.Tell(new MessageMemorizerActor.Message("foo4", DateTime.UtcNow.AddHours(1), "any"));
     Memorizer.Tell(new MessageMemorizerActor.Message("foo5", DateTime.UtcNow.AddDays(1), "any"));
     ReceiveN(5);
 }
コード例 #6
0
ファイル: PluginManager.cs プロジェクト: ZHJEE/OpenTAP
 public TapAssemblyResolver(IEnumerable <string> directoriesToSearch)
 {
     FileFinder.DirectoriesToSearch = directoriesToSearch;
     assemblyResolutionMemorizer    = new Memorizer <resolveKey, Assembly>(key => resolveAssembly(key.Name, key.ReflectionOnly))
     {
         MaxNumberOfElements = 10000,
         CylicInvokeResponse = Memorizer.CyclicInvokeMode.ReturnDefaultValue
     };
 }
コード例 #7
0
    public void StartRecording()
    {
        ClearCharacters();

        DirectoryInfo dirInfo = new DirectoryInfo(Application.dataPath + "/" + GameManager.Instance.DanceFilePath);

        _memorizeCharacter = Instantiate(_memorizeCharPrefab).GetComponent <Memorizer>();
        _memorizeCharacter.transform.position = _memCharPos;

        UIManager.Instance.SwitchState(UIManager.Instance.RecordUiState);
    }
コード例 #8
0
        public RadioModel()
        {
            AvailableRadio = Radio <G313Radio> .Find <G313RadioInfoProvider>().List().ToArray();

            Limits = new G313RadioLimits(null);

            Settings = SettingsModel.LoadOrCreate();
            Settings.Initialize();
            Memory = Memorizer.LoadOrCreate();

            Debug = new DebugModel(null);
        }
コード例 #9
0
    private void Start()
    {
        var player = GameObject.FindGameObjectWithTag("Player");

        _playerInfo         = player.GetComponent <PlayerInfo>();
        _playerController2D = player.GetComponent <CharacterController2D>();
        _playerMove         = player.GetComponent <PlayerMove>();
        _memorizer          = GameObject.Find("Memorizer").GetComponent <Memorizer>();
        _fade     = GameObject.Find("Fade").GetComponent <CanvasGroup>();
        _dialog   = GameObject.Find("Dialog Tip Box").transform;
        _digGroup = _dialog.GetComponent <CanvasGroup>();
    }
コード例 #10
0
 public void Awake()
 {
     _memorizer = GameObject.Find("Memorizer").GetComponent <Memorizer>();
     if (_binding)
     {
         Instantiate(_memorizer.GetActor().transform, transform.position, transform.localRotation, transform);
     }
     else
     {
         Instantiate(_memorizer.GetActor().transform, transform.position, transform.localRotation);
     }
 }
コード例 #11
0
    private void Start()
    {
        var player = GameObject.FindGameObjectWithTag("Player").transform;

        _controller     = player.GetComponent <CharacterController2D>();
        _playerInfo     = player.GetComponent <PlayerInfo>();
        _playerMove     = player.GetComponent <PlayerMove>();
        _main           = GetComponent <Animator>();
        _effect         = transform.Find("Weapon Effect").GetComponent <Animator>();
        _weaponMain     = transform.Find("Weapon Main");
        _spriteRenderer = _weaponMain.GetComponent <SpriteRenderer>();
        _hitPoint       = transform.Find("Hit Point");
        _memorizer      = GameObject.Find("Memorizer").GetComponent <Memorizer>();
    }
コード例 #12
0
ファイル: Loading.cs プロジェクト: Jaysae/2D-Fantasy
 private void Start()
 {
     _load1                 = GameObject.Find("Loading_1").GetComponent <CanvasGroup>();
     _load2Image            = GameObject.Find("Loading_2").GetComponent <Image>();
     _load2CanvasGroup      = GameObject.Find("Loading_2").GetComponent <CanvasGroup>();
     _load2Image.fillAmount = 0;
     _memorizer             = GameObject.Find("Memorizer").GetComponent <Memorizer>();
     if (!_memorizer.StartScene)
     {
         _load1.alpha            = 0;
         _load2CanvasGroup.alpha = 0;
         _load1.DOFade(1, 1f);
         _load2CanvasGroup.DOFade(1, 1f);
     }
     StartCoroutine(LoadAnim());
 }
コード例 #13
0
        public void MemorizerValidationTest()
        {
            int globalData = 1;
            var mem        = new Memorizer <int, string>(i => (i * globalData).ToString())
            {
                Validator = x => x + globalData
            };

            Assert.AreEqual("4", mem[4]);
            globalData = 2;
            Assert.AreEqual("8", mem[4]);
            globalData = 3;
            Assert.AreEqual("12", mem[4]);
            globalData = 4;
            Assert.AreEqual("16", mem[4]);
        }
コード例 #14
0
ファイル: Cutter.cs プロジェクト: Jaysae/2D-Fantasy
    private void Awake()
    {
        _mainCamera  = GameObject.Find("Main Camera").transform;
        _memorizer   = GameObject.Find("Memorizer").GetComponent <Memorizer>();
        _fade        = GameObject.Find("Fade").GetComponent <CanvasGroup>();
        _block       = GameObject.Find("Block").GetComponent <SpriteGlowEffect>();
        _light       = GameObject.Find("Light").GetComponent <SpriteGlowEffect>();
        _leftInfo    = GameObject.Find("LeftInfo").transform.GetComponent <RectTransform>();
        _rightInfo   = GameObject.Find("RightInfo").transform.GetComponent <RectTransform>();
        _start       = GameObject.Find("Start").transform.GetComponent <RectTransform>();
        _last        = GameObject.Find("Last").transform.GetComponent <RectTransform>();
        _next        = GameObject.Find("Next").transform.GetComponent <RectTransform>();
        _startG      = _start.GetComponent <CanvasGroup>();
        _lastG       = _last.GetComponent <CanvasGroup>();
        _nextG       = _next.GetComponent <CanvasGroup>();
        _dialog      = GameObject.Find("Dialog Tip Box").transform;
        _dialogGroup = _dialog.GetComponent <CanvasGroup>();
        _name        = GameObject.Find("Name").transform.Find("NameText").transform.GetComponent <SpriteRenderer>();
        //_border = GameObject.Find("Border").GetComponent<Image>();
        _fade.alpha = 1;
        var player = GameObject.FindGameObjectWithTag("Player");

        player.GetComponent <PlayerMove>().enabled = false;
        _actor      = player.GetComponent <SpriteRenderer>();
        _weaponMain = GameObject.FindGameObjectWithTag("Weapon").transform.Find("Weapon Main")
                      .GetComponent <SpriteRenderer>();
        player.GetComponent <PlayerInfo>().UseWeapon = false;
        var color = new Color(1, 1, 1, 0f);

        _actor.color      = color;
        _weaponMain.color = color;
        //_border.color = color;
        _name.color                   = color;
        _start.anchoredPosition       = new Vector2(_start.anchoredPosition.x, _start.anchoredPosition.y - ButtonMove);
        _last.anchoredPosition        = new Vector2(_last.anchoredPosition.x, _last.anchoredPosition.y - ButtonMove);
        _next.anchoredPosition        = new Vector2(_next.anchoredPosition.x, _next.anchoredPosition.y - ButtonMove);
        _startG.blocksRaycasts        = false;
        _lastG.blocksRaycasts         = false;
        _nextG.blocksRaycasts         = false;
        _leftInfo.anchoredPosition3D  = new Vector2(_leftInfo.anchoredPosition.x - InfoMove, _leftInfo.anchoredPosition.y);
        _rightInfo.anchoredPosition3D = new Vector2(_rightInfo.anchoredPosition.x + InfoMove, _rightInfo.anchoredPosition.y);
        _memorizer.Selete             = true;
    }
コード例 #15
0
        internal static IEnumerable <AssemblyData> AssembliesOfferedBy(List <PackageDef> packages, IEnumerable <PackageDependency> refs, bool recursive, Memorizer <PackageDef, List <AssemblyData> > offeredFiles)
        {
            var files      = new HashSet <AssemblyData>();
            var referenced = new HashSet <PackageDependency>();
            var toLookat   = new Stack <PackageDependency>(refs);

            while (toLookat.Any())
            {
                var dep = toLookat.Pop();

                if (referenced.Add(dep))
                {
                    var pkg = packages.Find(p => (p.Name == dep.Name) && dep.Version.IsCompatible(p.Version));

                    if (pkg != null)
                    {
                        if (recursive)
                        {
                            pkg.Dependencies.ForEach(toLookat.Push);
                        }

                        offeredFiles[pkg].ToList().ForEach(f => files.Add(f));
                    }
                }
            }

            return(files);
        }
コード例 #16
0
ファイル: PluginManager.cs プロジェクト: ZHJEE/OpenTAP
 public AssemblyFinder()
 {
     matching = new Memorizer <string, string[]>(x => allFiles.Where(y => Path.GetFileNameWithoutExtension(y) == x).ToArray());
 }
コード例 #17
0
        internal static void findDependencies(this PackageDef pkg, List <string> excludeAdd, List <AssemblyData> searchedFiles)
        {
            bool foundNew = false;

            var notFound = new HashSet <string>();

            // First update the pre-entered dependencies
            var installed = new Installation(Directory.GetCurrentDirectory()).GetPackages().Where(p => p.Name != pkg.Name).ToList();

            List <string> brokenPackageNames = new List <string>();

            List <AssemblyData> getPackageAssemblues(PackageDef pkgDef)
            {
                List <AssemblyData> output = new List <AssemblyData>();

                foreach (var f in pkgDef.Files)
                {
                    var asms = searchedFiles.Where(sf => PathUtils.AreEqual(f.FileName, sf.Location))
                               .Where(sf => IsDotNetAssembly(sf.Location)).ToList();
                    if (asms.Count == 0 && (Path.GetExtension(f.FileName).Equals(".dll", StringComparison.OrdinalIgnoreCase) || Path.GetExtension(f.FileName).Equals(".exe", StringComparison.OrdinalIgnoreCase)))
                    {
                        if (File.Exists(f.FileName))
                        {
                            // If the pluginSearcher found assemblies that are located somewhere not expected by the package definition, the package might appear broken.
                            // But if the file found by the pluginSearcher is the same as the one expected by the package definition we should not count it as broken.
                            // This could cause a package to not be added as a dependencies.
                            // E.g. when debugging and the OpenTAP.Cli.dll is both in the root build dir and in "Packages/OpenTAP"
                            var asmsIdenticalFilename = searchedFiles.Where(sf => Path.GetFileName(f.FileName) == Path.GetFileName(sf.Location));
                            var asmsIdentical         = asmsIdenticalFilename.Where(sf => PathUtils.CompareFiles(f.FileName, sf.Location));
                            output.AddRange(asmsIdentical);
                            continue;
                        }

                        if (!brokenPackageNames.Contains(pkgDef.Name) && IsDotNetAssembly(f.FileName))
                        {
                            brokenPackageNames.Add(pkgDef.Name);
                            log.Warning($"Package '{pkgDef.Name}' is not installed correctly?  Referenced file '{f.FileName}' was not found.");
                        }
                    }
                    output.AddRange(asms);
                }
                return(output);
            };

            var packageAssemblies = new Memorizer <PackageDef, List <AssemblyData> >(getPackageAssemblues);

            // check versions of any hardcoded dependencies against what is currently installed
            foreach (PackageDependency dep in pkg.Dependencies)
            {
                var installedPackage = installed.FirstOrDefault(ip => ip.Name == dep.Name);
                if (installedPackage != null)
                {
                    if (dep.Version == null)
                    {
                        dep.Version = new VersionSpecifier(installedPackage.Version, VersionMatchBehavior.Compatible);
                        log.Info("A version was not specified for package dependency {0}. Using installed version ({1}).", dep.Name, dep.Version);
                    }
                    else
                    {
                        if (!dep.Version.IsCompatible(installedPackage.Version))
                        {
                            throw new ExitCodeException((int)PackageCreateAction.ExitCodes.PackageDependencyError, $"Installed version of {dep.Name} ({installedPackage.Version}) is incompatible with dependency specified in package definition ({dep.Version}).");
                        }
                    }
                }
                else
                {
                    throw new ExitCodeException((int)PackageCreateAction.ExitCodes.PackageDependencyError,
                                                $"Package dependency '{dep.Name}' specified in package definition is not installed. Please install a compatible version first.");
                }
            }

            // Find additional dependencies
            do
            {
                foundNew = false;

                // Find everything we already know about
                var offeredByDependencies = AssembliesOfferedBy(installed, pkg.Dependencies, false, packageAssemblies).ToList();
                var offeredByThis         = packageAssemblies[pkg]
                                            .Where(f => f != null)
                                            .ToList();

                var anyOffered = offeredByDependencies.Concat(offeredByThis).ToList();

                // Find our dependencies and subtract the above two lists
                var dependentAssemblyNames = pkg.Files
                                             .SelectMany(fs => fs.DependentAssemblies)
                                             .Where(r => r.Name != "mscorlib") // Special case. We should not bundle the framework assemblies.
                                             .Where(r => !anyOffered.Any(of => AssemblyRefUtils.IsCompatibleReference(of, r)))
                                             .Distinct().Where(x => !excludeAdd.Contains(x.Name)).ToList();

                // If there's anything left we start resolving
                if (dependentAssemblyNames.Any())
                {
                    // First look in installed packages
                    var packageCandidates = new Dictionary <PackageDef, int>();
                    foreach (var f in installed)
                    {
                        var candidateAsms = packageAssemblies[f].Where(asm => dependentAssemblyNames.Any(dep => (dep.Name == asm.Name))).ToList();

                        // Don't consider a package that only matches assemblies in the Dependencies subfolder
                        candidateAsms.RemoveAll(asm => asm.Location.Contains("Dependencies")); // TODO: less lazy check for Dependencies subfolder would be good.

                        if (candidateAsms.Count > 0)
                        {
                            packageCandidates[f] = candidateAsms.Count;
                        }
                    }

                    // Look at the most promising candidate (i.e. the one containing most assemblies with the same names as things we need)
                    PackageDef candidatePkg = packageCandidates.OrderByDescending(k => k.Value).FirstOrDefault().Key;

                    if (candidatePkg != null)
                    {
                        foreach (AssemblyData candidateAsm in packageAssemblies[candidatePkg])
                        {
                            var requiredAsm = dependentAssemblyNames.FirstOrDefault(dep => dep.Name == candidateAsm.Name);
                            if (requiredAsm != null)
                            {
                                if (OpenTap.Utils.Compatible(candidateAsm.Version, requiredAsm.Version))
                                {
                                    log.Info($"Satisfying assembly reference to {requiredAsm.Name} by adding dependency on package {candidatePkg.Name}");
                                    if (candidateAsm.Version != requiredAsm.Version)
                                    {
                                        log.Warning($"Version of {requiredAsm.Name} in {candidatePkg.Name} is different from the version referenced in this package ({requiredAsm.Version} vs {candidateAsm.Version}).");
                                        log.Warning($"Consider changing your version of {requiredAsm.Name} to {candidateAsm.Version} to match that in {candidatePkg.Name}.");
                                    }
                                    foundNew = true;
                                }
                                else
                                {
                                    var depender = pkg.Files.FirstOrDefault(f => f.DependentAssemblies.Contains(requiredAsm));
                                    if (depender == null)
                                    {
                                        log.Error($"This package require assembly {requiredAsm.Name} in version {requiredAsm.Version} while that assembly is already installed through package '{candidatePkg.Name}' in version {candidateAsm.Version}.");
                                    }
                                    else
                                    {
                                        log.Error($"{Path.GetFileName(depender.FileName)} in this package require assembly {requiredAsm.Name} in version {requiredAsm.Version} while that assembly is already installed through package '{candidatePkg.Name}' in version {candidateAsm.Version}.");
                                    }
                                    //log.Error($"Please align the version of {requiredAsm.Name} to ensure interoperability with package '{candidate.Key.Name}' or uninstall that package.");
                                    throw new ExitCodeException((int)PackageCreateAction.ExitCodes.AssemblyDependencyError,
                                                                $"Please align the version of {requiredAsm.Name} ({candidateAsm.Version} vs {requiredAsm.Version})  to ensure interoperability with package '{candidatePkg.Name}' or uninstall that package.");
                                }
                            }
                        }
                        if (foundNew)
                        {
                            log.Info("Adding dependency on package '{0}' version {1}", candidatePkg.Name, candidatePkg.Version);

                            PackageDependency pd = new PackageDependency(candidatePkg.Name, new VersionSpecifier(candidatePkg.Version, VersionMatchBehavior.Compatible));
                            pkg.Dependencies.Add(pd);
                        }
                    }
                    else
                    {
                        // No installed package can offer any of the remaining referenced assemblies.
                        // add them as payload in this package in the Dependencies subfolder
                        foreach (var unknown in dependentAssemblyNames)
                        {
                            var foundAsms = searchedFiles.Where(asm => (asm.Name == unknown.Name) && OpenTap.Utils.Compatible(asm.Version, unknown.Version)).ToList();
                            var foundAsm  = foundAsms.FirstOrDefault();

                            if (foundAsm != null)
                            {
                                AddFileDependencies(pkg, unknown, foundAsm);
                                packageAssemblies.Invalidate(pkg);
                                foundNew = true;
                            }
                            else if (!notFound.Contains(unknown.Name))
                            {
                                log.Debug("'{0}' could not be found in any of {1} searched assemblies, or is already added.", unknown.Name, searchedFiles.Count);
                                notFound.Add(unknown.Name);
                            }
                        }
                    }
                }
            }while (foundNew);
        }