private IEnumerator Get() { Type type = null; string code = (string)UserData[0]; bool done = false; DateTime start = DateTime.Now; int milliseconds = 0; bool errorInCode = false; List <CompilerError> errors = new List <CompilerError>(); try { type = RuntimeCompiler.CompileType(code, ref errorInCode, ref errors); TimeSpan span = DateTime.Now - start; milliseconds = span.Milliseconds; done = true; } catch (Exception ex) { done = true; Debug.LogError(ex.StackTrace); } while (!done) { yield return(null); } if (errorInCode) { VRErrorManager.Instance.Show(ErrorHelper.GetErrorDescByCode(TM.Errors.ErrorCode.CompileCodeError)); } if (type == null && errorInCode) { ((IRequest)this).OnResponseError($"Compile code error! {ToSingleString(errors)} "); } else { ResponseCompiler response = new ResponseCompiler { CompiledType = type, Milliseconds = milliseconds }; ((IRequest)this).OnResponseDone(response); } yield return(true); }
protected override void Execute(List <GameEntity> entities) { foreach (var entity in entities) { var request = new RequestCompiler(entity.csCode.Value); LogManager.GetCurrentClassLogger().Info($"Compile started... Entity: {entity}"); request.OnFinish += response => { ResponseCompiler responseCompiler = (ResponseCompiler)response; Type compiledType = responseCompiler.CompiledType; entity.ReplaceType(compiledType); LogManager.GetCurrentClassLogger() .Info( $"<Color=Green><b>Compile code successful! Time = {responseCompiler.Milliseconds} ms.</b></Color>"); }; request.OnError += s => { //entity.ReplaceType(null); }; } }