public void Javascript_Error_Is_Raised()
        {
            var manager = new RuntimeManager(new ManualManagerSettings());

            Assert.Throws<ScriptEngineException>(async () =>
            await manager.ExecuteAsync("test", "Console.WriteLine('wrote this to the console');"));
        }
        public async void Script_Returns_Engine()
        {
            var manager = new RuntimeManager(new ManualManagerSettings());

            var engine = await manager.ExecuteAsync("test", "var i = 0; i++;");

            Assert.AreEqual(1, engine.Script.i);
        }
        public async void Compiled_Script_Is_Cached_By_Default()
        {
            var manager = new RuntimeManager(new ManualManagerSettings());

            await manager.ExecuteAsync("test", "var i = 0; i++;");

            CachedV8Script cached;
            manager.TryGetCached("test", out cached).ShouldBeTrue();
        }
        public void Uncached_Script_Is_Not_Cached()
        {
            var manager = new RuntimeManager(new ManualManagerSettings());

            manager.Compile("test", "var i = 0; i++;", false);

            CachedV8Script cached;
            manager.TryGetCached("test", out cached).ShouldBeFalse();
        }
        public void Expired_Script_Is_Not_Returned()
        {
            var manager = new RuntimeManager(new ManualManagerSettings());

            manager.Compile("test", "var i = 0; i++;", true, 1);

            Thread.Sleep(1000);

            CachedV8Script cached;
            manager.TryGetCached("test", out cached).ShouldBeFalse();
        }
        public async void Cached_Script_Shows_Cache_Hits()
        {
            var manager = new RuntimeManager(new ManualManagerSettings());

            await manager.ExecuteAsync("test", "var i = 0; i++;");

            await manager.ExecuteAsync("test", "var i = 0; i++;");

            CachedV8Script cached;
            manager.TryGetCached("test", out cached);

            cached.CacheHits.ShouldBeGreaterThan(1);
        }
        public async void Script_With_0_Timeout_Works()
        {
            var manager = new RuntimeManager(new ManualManagerSettings { ScriptTimeoutMilliSeconds = 0 })
            {
                AddConsoleReference = true
            };

            var script = "Console.WriteLine('Started:' + new Date().toJSON()); " +
                         "var now = new Date().getTime(); " +
                         "Console.WriteLine('Finished:' + new Date().toJSON());";


            await manager.ExecuteAsync("test", script);

        }
        public async void Script_With_String_Code_Is_Run()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings());

            await manager.ExecuteAsync(new List<IncludeScript> { new IncludeScript { Code = "subject.Count = 10; subject.TestString = 'test string1';", ScriptId = "testScript" } },
                new ExecutionOptions
                {
                    HostObjects = new List<HostObject> { new HostObject { Name = "subject", Target = subject } },
                });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(10);
            subject.TestString.ShouldEqual("test string1");
        }
        public async void Script_With_Http_Reference_Is_Run()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings());

            await manager.ExecuteAsync(new List<IncludeScript> { new IncludeScript { Uri = "https://gist.githubusercontent.com/eswann/66796164c1904b6135ea/raw/5491642164a45ae34af2926137950de3249d1e91/gistfile1.txt", ScriptId = "testScript" } },
                new ExecutionOptions
                {
                    HostObjects = new List<HostObject> { new HostObject { Name = "subject", Target = subject } },
                });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(10);
            subject.TestString.ShouldEqual("test string1");
        }
        public void Script_Exceeding_Timeout_Errs()
        {
            var manager = new RuntimeManager(new ManualManagerSettings{ScriptTimeoutMilliSeconds = 500})
            {
                AddConsoleReference = true
            };

            var script = "Console.WriteLine('Started:' + new Date().toJSON()); " +
                         "var now = new Date().getTime(); while(new Date().getTime() < now + 1000){{ /* do nothing */ }}; " +
                         "Console.WriteLine('Finished:' + new Date().toJSON());";


            Assert.Throws<ScriptInterruptedException>(async () => await manager.ExecuteAsync("test", script));
    
        }
        public async void Script_With_Http_Include_Is_Included()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings());

            await manager.ExecuteAsync("testscript", "subject.Count = 10; subject.TestString = x;",
                new ExecutionOptions
                {
                    HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
                    Scripts = new List<IncludeScript> { new IncludeScript { Uri = "https://gist.githubusercontent.com/eswann/3215f3afff3a602c0f3a/raw/a9ace53fca80fdcdefba60c4f7bf803bf5239905/gistfile1.txt", ScriptId = "testScript2" } }
                });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(10);
            subject.TestString.ShouldEqual("test string1");
        }
        public async void Script_With_File_Include_Is_Included()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings());

            await manager.ExecuteAsync("testscript", "subject.Count = 10; subject.TestString = x;",
                new ExecutionOptions
                {
                    HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
                    Scripts = new List<IncludeScript> {new IncludeScript {Uri = ".\\TestIncludeScript.js", ScriptId = "testScript2"}}
                });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(10);
            subject.TestString.ShouldEqual("test string1");
        }
        public async void Require_Specified_As_Script_HttpPath_Path_Is_Used()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings {ScriptTimeoutMilliSeconds = 0});

            await
                manager.ExecuteAsync("testscript",
                    @"var testObject = require('https://gist.githubusercontent.com/eswann/76ecaba02dee33cf26b4/raw/bcafe0a389c84ba44d6ee1661e66b2213aa2ffa0/testRequire'); subject.Count = 10; subject.TestString = testObject.getText();",
                    new ExecutionOptions
                    {
                        HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
                    });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(10);
            subject.TestString.ShouldEqual("testText");
        }
        public async void Require_Named_With_Explicit_Name_Succeeds()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings { ScriptTimeoutMilliSeconds = 0 });

            await
                manager.ExecuteAsync("testscript",
                    @"var testObject = requireNamed('testRequire', 'https://gist.githubusercontent.com/eswann/3ff5ec2bcc63b7d2cdaa/raw/26e30f6a9761dbbe5634b2de1549c4a455b7a7d6/TestDiffNameRequire.js'); subject.Count = 10; subject.TestString = testObject.getText();",
                    new ExecutionOptions
                    {
                        HostObjects = new List<HostObject> { new HostObject { Name = "subject", Target = subject } },
                    });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(10);
            subject.TestString.ShouldEqual("testText");
        }
        public async void Included_Variables_Are_Accessible_Via_Script_Object()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings());

            var engine = await manager.ExecuteAsync("testscript", "subject.Count = 10; subject.TestString = x;",
                new ExecutionOptions
                {
                    HostObjects = new List<HostObject> { new HostObject { Name = "subject", Target = subject } },
                    Scripts = new List<IncludeScript> { new IncludeScript { Uri = ".\\TestIncludeScript.js", ScriptId = "testScript2" } }
                });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(10);
            subject.TestString.ShouldEqual("test string1");
            engine.Script.x = "test string1";
        }
        public async void Script_With_Require_Is_Used()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings {ScriptTimeoutMilliSeconds = 0});

            RequireManager.RegisterPackage(new RequiredPackage { PackageId = "testRequire", ScriptUri = ".\\TestRequire.js" });

            await manager.ExecuteAsync("testscript",
                    "var testObject = require('testRequire'); subject.Count = 10; subject.TestString = testObject.getText();",
                    new ExecutionOptions
                    {
                        HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
                    });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(10);
            subject.TestString.ShouldEqual("testText");
        }
        public async void Multiple_Scripts_Types_Are_Run_First_To_Last()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings());

            await manager.ExecuteAsync(new List<IncludeScript>
                {
                    new IncludeScript {Uri = ".\\TestMainScript.js", ScriptId = "testScript"},
                    new IncludeScript {Code = "subject.TestString = 'test string3';", ScriptId = "testScript3"}
                },
                new ExecutionOptions
                {
                    HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
                });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(10);
            subject.TestString.ShouldEqual("test string3");
        }
        public async void Multiple_Scripts_Types_Are_Run_First_To_Last()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings());

            await manager.ExecuteAsync(new List<IncludeScript>
                {
                    new IncludeScript {Uri = ".\\TestMainScript.js", ScriptId = "testScript"},
                    new IncludeScript {Code = "subject.TestString = 'test string3';", ScriptId = "testScript3"},
                    new IncludeScript {Uri = "https://gist.githubusercontent.com/eswann/62fc90e542f7697263db/raw/026c42ef0043a70a8c3b720e3026ecee9c691a06/gistfile1.txt", ScriptId = "TestScript4"}
                },
                new ExecutionOptions
                {
                    HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
                });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(20);
            subject.TestString.ShouldEqual("test string3");
        }
        public async void Script_Referencing_Specific_Type_Executes()
        {

            var manager = new RuntimeManager(new ManualManagerSettings());

            var hostType = new HostType
            {
                Name = "MathStuff",
                Type = typeof(System.Math)
            };

            var subject = new TestObject();

            await manager.ExecuteAsync("test", "subject.Result = MathStuff.Pow(10,2);", 
                new List<HostObject> { new HostObject { Name = "subject", Target = subject } }, 
                new List<HostType> { hostType });

            subject.Result.ShouldEqual(100);

        }
        public async void Basic_Http_Get_Headers_Are_Retrieved()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings { ScriptTimeoutMilliSeconds = 0 });

            PackageHelpers.RegisterRequestPackages();

            manager.AddConsoleReference = true;
            var options = new ExecutionOptions();
            options.HostObjects.Add(new HostObject { Name = "subject", Target = subject });

            var scriptAwaiter = new ScriptAwaiter();
            options.HostObjects.Add(new HostObject { Name = "scriptAwaiter", Target = scriptAwaiter });

            var code = "var request = require('request');" +
                       "request({url: 'http://api.icndb.com/jokes/random/1', json: true}," +
                       " function (error, response, body) {subject.Response = response; subject.Headers = response.headers; scriptAwaiter.Callback();});";

            await manager.ExecuteAsync("testScript", code, options);
            await scriptAwaiter.T;

            subject.Headers.Count().ShouldBeGreaterThan(0);
        }
 /// <summary>
 /// Use to instance Generic event with parameter
 /// </summary>
 /// <param name="_genericEventInstance"></param>
 public FMOD.RESULT CreateGenericMonoEventParameterInstance(ref GenericEventMonoParameter _genericEventInstance)
 {
     _genericEventInstance.fmodEvent = RuntimeManager.CreateInstance(_genericEventInstance.eventPath);
     return(_genericEventInstance.fmodEvent.getParameter(_genericEventInstance.parameterName, out _genericEventInstance.eventParameter));
 }
        public async void Script_Can_Write_To_Console()
        {
            var manager = new RuntimeManager(new ManualManagerSettings()) {AddConsoleReference = true};

            await manager.ExecuteAsync("test", "Console.WriteLine('wrote this to the console');");
        }
 private void UiLeftRight()
 {
     RuntimeManager.PlayOneShot(UiLR, transform.position);
 }
 private void PlayJumpStartAudio(PlayerJumpStart playerJumpStart)
 {
     RuntimeManager.PlayOneShot(Jump, transform.position);
 }
 private void PlayJumpSound()
 {
     RuntimeManager.PlayOneShot(m_JumpSound);
 }
 private void UiSelect()
 {
     RuntimeManager.PlayOneShot(SelectPunch, transform.position);
 }
        public async void Require_Named_With_Explicit_Name_Succeeds()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings { ScriptTimeoutMilliSeconds = 0 });

            await
                manager.ExecuteAsync("testscript",
                    @"var testObject = requireNamed('testRequire', '.\\TestDiffNameRequire.js'); subject.Count = 10; subject.TestString = testObject.getText();",
                    new ExecutionOptions
                    {
                        HostObjects = new List<HostObject> { new HostObject { Name = "subject", Target = subject } },
                    });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(10);
            subject.TestString.ShouldEqual("testText");
        }
        public async void Require_Specified_As_Script_Local_Path_Is_Used()
        {
            var subject = new TestObject();
            var manager = new RuntimeManager(new ManualManagerSettings {ScriptTimeoutMilliSeconds = 0});

            await
                manager.ExecuteAsync("testscript",
                    @"var testObject = require('.\\TestRequire.js'); subject.Count = 10; subject.TestString = testObject.getText();",
                    new ExecutionOptions
                    {
                        HostObjects = new List<HostObject> {new HostObject {Name = "subject", Target = subject}},
                    });

            subject.Name.ShouldEqual("Name");
            subject.Count.ShouldEqual(10);
            subject.TestString.ShouldEqual("testText");
        }
 /// <summary>
 /// Attach an event to current transform
 /// </summary>
 /// <param name="_eventInstance">fmod event instance</param>
 /// <param name="_emitterTransform">transform to attach event</param>
 public void AttachSfx(EventInstance _eventInstance, Transform _emitterTransform)
 {
     RuntimeManager.AttachInstanceToGameObject(_eventInstance, _emitterTransform, GetComponent <Rigidbody2D>());
     _eventInstance.set3DAttributes(RuntimeUtils.To3DAttributes(_emitterTransform.position));
 }
Example #30
0
 public static void PlayOneShotAttached(EventType @event, GameObject location)
 {
     RuntimeManager.PlayOneShotAttached(AudioManager.Instance.EventPaths.GetPath(@event), location);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="_bus">Variable instance</param>
 /// <param name="_path">Channel path</param>
 public void SetBus(ref Bus _bus, string _path)
 {
     _bus = RuntimeManager.GetBus(m_busPrefix + _path);
 }
Example #32
0
 public void Play()
 {
     RuntimeManager.PlayOneShot(eventName);
 }
 private void Awake()
 {
     _manager = FindObjectOfType <RuntimeManager>();
     _input   = GetComponentInChildren <TMP_InputField>();
     _button  = GetComponentInChildren <Button>();
 }
 // Start is called before the first frame update
 void Start()
 {
     drag = RuntimeManager.CreateInstance(dragPath);
 }
Example #35
0
 void Start()
 {
     LogoSfxEvent = RuntimeManager.CreateInstance(LogoSFX);
     Invoke("StartSFX", 3.3f);
 }
Example #36
0
 public void Can_download_windows_runtime()
 {
     RuntimeManager.DownloadRuntimeToDirectory(QmlNetConfig.QtBuildVersion, RuntimeTarget.Windows64, _tempDirectory);
     File.ReadAllText(Path.Combine(_tempDirectory, "version.txt")).Should().Be($"{QmlNetConfig.QtBuildVersion}-win-x64");
 }
 public void Init_OneShot(Vector3 position, float waitTime)
 {
     RuntimeManager.PlayOneShot(event_Ref, position);
     iconPosition = position;
     StartCoroutine(DrawIconForSeconds(waitTime));
 }
Example #38
0
 private void HandlePlaySound(string soundID) => RuntimeManager.PlayOneShot("event:/" + soundID);
 //////// = Enemy = //////////
 public void PlayEnemyAttack(GameObject forFMOD)
 {
     RuntimeManager.PlayOneShotAttached(enemyAttack, forFMOD);
 }
Example #40
0
 private void HandlePlaySound(FMODEvent sound) => RuntimeManager.PlayOneShot(sound.Name);
Example #41
0
 private void Start()
 {
     timeHolder  = Time.time + showTime;
     timeHolder2 = Time.time + fadeTime;
     RuntimeManager.PlayOneShot(DuckSFX);
 }
 private void PlayLandingSound()
 {
     RuntimeManager.PlayOneShot(m_LandSound);
     m_NextStep = m_StepCycle + .5f;
 }
Example #43
0
 /// <summary>
 /// Returns an instance of the specified event, you will need to start, stop and release it manually
 /// </summary>
 public static EventInstance GetEventInstance(EventType @event)
 {
     return(RuntimeManager.CreateInstance(AudioManager.Instance.EventPaths.GetPath(@event)));
 }
Example #44
0
 public static void PlayOneShot2D(EventType @event)
 {
     RuntimeManager.PlayOneShot(AudioManager.Instance.EventPaths.GetPath(@event));
 }
Example #45
0
 public static void PlayOneShot3D(EventType @event)
 {
     RuntimeManager.PlayOneShotAttached(AudioManager.Instance.EventPaths.GetPath(@event), AudioManager.Instance.gameObject);
 }
 private void PlayJumpEndAudio(PlayerJumpEnd playerJumpEnd)
 {
     RuntimeManager.PlayOneShot(Land, transform.position);
 }
        public async void Script_With_No_Subject_Can_Be_Executed()
        {
            var manager = new RuntimeManager(new ManualManagerSettings());

            await manager.ExecuteAsync("test", "var i = 0; i++;");
        }
Example #48
0
 private void Awake()
 {
     exitAmbiance = RuntimeManager.CreateInstance(exitAmbianceEvent);
     RuntimeManager.AttachInstanceToGameObject(exitAmbiance, GetComponent <Transform>(), GetComponent <Rigidbody>());
     exitAmbiance.start();
 }
 /// <summary>
 /// Use to instance Generic event in game
 /// </summary>
 /// <param name="_genericEvent"></param>
 public void CreateGenericEnventInstance(ref GenericEvent _genericEvent)
 {
     _genericEvent.fmodEvent = RuntimeManager.CreateInstance(_genericEvent.eventPath);
 }
 static void EnsureRuntimeManager()
 {
     if (runtimeManager == null)
     {
         runtimeManager = new RuntimeManager();
     }
 }
    /// <summary>
    /// /////////////////////////// = Sound And Music Methods = /////////////////////////////////////
    ///
    /// Общедоступные методы для вызова их через синглтон.
    /// Здесь и надо создавать новые методы для новых звуков в игре.
    /// Заделены по зонам ответственности для более лёгкой навигаии.
    ///
    /// </summary>

    ///////////// = GAME = ///////////////
    public void PlayGamePSYCHO(GameObject forFMOD)
    {
        RuntimeManager.PlayOneShotAttached(psycho, forFMOD);
    }
 public void PlayPlayerFootSteps(GameObject forFMOD)
 {
     RuntimeManager.PlayOneShotAttached(playerFootSteps, forFMOD);
 }
 public void PlayPlayerJump(GameObject forFMOD)
 {
     RuntimeManager.PlayOneShotAttached(playerJump, forFMOD);
 }
    void Awake()
    {
        panels = new PanelsManager(OptionPanel, MenuPanel, RuntimePanel, MessagePanel, ShadowPanel, HeartPanel, LoadPanel, OpeningPanel);
        runtime = new RuntimeManager(RuntimePanel.GetComponentsInChildren<Button>(true));
        hearts = new HeartsManager();
        load = new LoadManager(LoadPanel);
        menu = new MenuManager(MenuPanel);
        opening = new OpeningManager(OpeningPanel);

        background = gameObject.GetComponent<Image>();
    }
 public void Init_Ref()
 {
     event_Description = RuntimeManager.GetEventDescription(event_Ref);
     event_Description.getMaximumDistance(out maxDistance);
     event_Description.getMinimumDistance(out minDistance);
 }