/// <summary> /// Timer constructor /// </summary> /// <param name="Interval">Timer's interval</param> /// <param name="Reps">Number of times to repeat this timer before removal</param> /// <param name="Tick">Method to execute each tick</param> public Timer(int Interval,int Reps,OnTick Tick) { _ID++; ID=_ID; this.Interval=Interval; this.Tick=Tick; this.Reps=Reps; }
public Timer(OnTick OnTick, int Delay, int MaxExecute) { this.m_OnTick = OnTick; this.m_Delay = Delay; this.m_MaxExecute = MaxExecute; this.m_CurExecute = 0; this.m_LastExecute = 0; this.m_Tags = new Hashtable(); }
public static void Register(ITickable tickable) { Tickables.Add(tickable); if (!Running) { Running = true; thread = new Thread(() => { while (Running) { OnTick?.Invoke(null, EventArgs.Empty); foreach (var t in Tickables) { t.Tick(TICK); } Thread.Sleep(TICK); } }); thread.Start(); } }
internal static bool InstallHooks(PluginHeader *header) { _sendToClient = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header->Recv); _sendToServer = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header->Send); _getPacketLength = Marshal.GetDelegateForFunctionPointer <OnGetPacketLength>(header->GetPacketLength); _getPlayerPosition = Marshal.GetDelegateForFunctionPointer <OnGetPlayerPosition>(header->GetPlayerPosition); _castSpell = Marshal.GetDelegateForFunctionPointer <OnCastSpell>(header->CastSpell); _getStaticImage = Marshal.GetDelegateForFunctionPointer <OnGetStaticImage>(header->GetStaticImage); _requestMove = Marshal.GetDelegateForFunctionPointer <RequestMove>(header->RequestMove); ClientWindow = header->HWND; _onTick = Tick; _recv = OnRecv; _send = OnSend; _onHotkeyPressed = OnHotKeyHandler; _onMouse = OnMouseHandler; _onUpdatePlayerPosition = OnPlayerPositionChanged; _onClientClose = OnClientClosing; _onInitialize = OnInitialize; _onConnected = OnConnected; _onDisconnected = OnDisconnected; // _onFocusGained = OnFocusGained; // _onFocusLost = OnFocusLost; header->OnRecv = Marshal.GetFunctionPointerForDelegate(_recv); header->OnSend = Marshal.GetFunctionPointerForDelegate(_send); header->OnHotkeyPressed = Marshal.GetFunctionPointerForDelegate(_onHotkeyPressed); header->OnMouse = Marshal.GetFunctionPointerForDelegate(_onMouse); header->OnPlayerPositionChanged = Marshal.GetFunctionPointerForDelegate(_onUpdatePlayerPosition); header->OnClientClosing = Marshal.GetFunctionPointerForDelegate(_onClientClose); header->OnInitialize = Marshal.GetFunctionPointerForDelegate(_onInitialize); header->OnConnected = Marshal.GetFunctionPointerForDelegate(_onConnected); header->OnDisconnected = Marshal.GetFunctionPointerForDelegate(_onDisconnected); // header->OnFocusGained = Marshal.GetFunctionPointerForDelegate( _onFocusGained ); // header->OnFocusLost = Marshal.GetFunctionPointerForDelegate( _onFocusLost ); header->Tick = Marshal.GetFunctionPointerForDelegate(_onTick); return(true); }
private void Update() { _time += Time.deltaTime; if (!(_time >= TICK_TIMER)) { return; } _time -= TICK_TIMER; _tick++; OnMicroTick?.Invoke(this, new TickArgs { Tick = _tick }); if (_tick % 5 == 0) { OnTick?.Invoke(this, new TickArgs { Tick = _tick }); } }
public void Pull() { if (!IsActive) { return; } _RopeLengthData.PullRope(Time.deltaTime * _Data.PullingSpeed); if (_RopeLengthData.RopeLength < _Data.MinRopeLength) { Complete(); return; } _Tools.Rope.ScrollTexture(Time.deltaTime * _Data.RopeScrollSpeed); var hookDirection = (_Tools.Hook.transform.position - _Tools.Camera.position).normalized; var newHookDirection = hookDirection * _RopeLengthData.RopeLength; _Tools.Hook.transform.position = _Tools.Camera.position + newHookDirection; OnTick?.Invoke(this, new OnTickArgs(_RopeLengthData.RopeLength)); }
protected override void OnUpdate() { _time += Time.deltaTime; if (!(_time >= TICK_TIMER)) { return; } _time -= TICK_TIMER; Tick++; OnMicroTick?.Invoke(this, new TickEventArgs { Tick = Tick }); if (Tick % 5 == 0) { OnTick?.Invoke(this, new TickEventArgs { Tick = Tick }); } }
IEnumerator <WaitForSeconds> Ticker() { int partialsPerTick = playerTicksPerTick; float duration = gameTickTime; while (ticking) { if (ticks >= 0) { partialTick += 1; if (playerTicksAreValid || partialTick == partialsPerTick) { OnTick?.Invoke(ticks, partialTick, duration, partialTick == partialsPerTick); } yield return(new WaitForSeconds(duration / partialsPerTick)); if (partialTick == partialsPerTick) { partialsPerTick = playerTicksPerTick; playerTicksAreValid = true; ticks += 1; partialTick = 0; duration = gameTickTime; } } else { partialsPerTick = playerTicksPerTick; playerTicksAreValid = true; ticks += 1; partialTick = 0; duration = gameTickTime; yield return(new WaitForSeconds(duration)); } } }
private void UpdateFrameId() { // Can't tick until we get our first tick packet if (FrameID == NetworkConstants.BeforeStartOfGameFrameId) { return; } /*Console.WriteLine("Attempting tick"); * // Don't tick until we're ready * var now = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; * if (now < nextClientTick) * { * return; * } * * // Work out how many ticks we need * int elapsedTicks = 1; * if (estimatedServerFrameTime > 0f) * { * elapsedTicks += (int)((now - nextClientTick) / estimatedServerFrameTime); * }*/ int elapsedTicks = lastServerTickFrameId - FrameID; // Perform that number of ticks for (int i = 0; i < elapsedTicks; i++) { //Console.WriteLine("Doing tick: frameId {0}", FrameID); OnTick?.Invoke(); FrameID++; } // Schedule next tick //nextClientTick = now + (int)estimatedServerFrameTime; }
//处理行情 private void _onTick(object sender, TickEventArgs e) { MarketData _md = e.Tick; //处理时间 DateTime _time = DateTime.Now; try { _time = DateTime.ParseExact(_md.UpdateTime, "HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture); if ((_time - DateTime.Now).TotalHours > 23) { _time.AddDays(-1); } else if ((_time - DateTime.Now).TotalHours < -23) { _time.AddDays(1); } } catch (Exception ex) { LogUtils.EnginLog(ex.StackTrace); } _time.AddMilliseconds(_md.UpdateMillisec); Tick _tick = new Tick(_md.InstrumentID, _md.LastPrice, _md.BidPrice, _md.BidVolume, _md.AskPrice, _md.AskVolume , _md.AveragePrice, _md.Volume, _md.OpenInterest, _time, _md.UpperLimitPrice, _md.LowerLimitPrice); //发送 while (0 != Interlocked.Exchange(ref BaseStrategy.Locker, 1)) { } OnTick?.Invoke(_tick); Interlocked.Exchange(ref BaseStrategy.Locker, 0); }
public void SubmitNow() { OnTick.Invoke(); }
public void Tick(uint tick) { //Other AI Logic OnTick.Invoke(tick); }
public void InvokeTick() { OnTick?.Invoke(this, EventArgs.Empty); }
public void InvokeTick(GameBoard board) { OnTick?.Invoke(board); }
public void Add(float addition) { value = Mathf.Clamp(value + addition, 0.0f, maxValue); OnTick.Invoke(value / maxValue); }
/// <summary> /// Timer constructor /// </summary> /// <param name="Interval">Timer's interval</param> /// <param name="Reps">Number of times to repeat this timer before removal</param> /// <param name="Tick">Method to execute each tick</param> /// <param name="Parent">Parent object - useful for posession checking and debugging</param> public Timer(int Interval, int Reps, OnTick Tick, object Parent) : this(Interval,Reps,Tick) { this.Parent=Parent; }
private void OnElapsed(Object source, ElapsedEventArgs e) { //System.Diagnostics.Debug.WriteLine("OnElapsed"); OnTick?.Invoke(); }
/// <summary> /// Main entry point of the server which starts a single server. /// </summary> /// <param name="args"></param> public static void Main(string[] args) { string[] rawArguments = CommandEngine.ParseArguments(string.Join(" ", args)); string[] arguments = CommandEngine.GetArguments(rawArguments); NameValueCollection variables = CommandEngine.GetFlags(rawArguments); string configFile; if (arguments.Length == 0) { configFile = "Server.config"; } else if (arguments.Length == 1) { configFile = arguments[0]; } else { System.Console.Error.WriteLine("Invalid comand line arguments."); System.Console.WriteLine("Press any key to exit..."); System.Console.ReadKey(); return; } ServerSpawnData spawnData; try { spawnData = ServerSpawnData.CreateFromXml(configFile, variables); } catch (IOException e) { System.Console.Error.WriteLine("Could not load the config file needed to start (" + e.Message + "). Are you sure it's present and accessible?"); System.Console.WriteLine("Press any key to exit..."); System.Console.ReadKey(); return; } catch (XmlConfigurationException e) { System.Console.Error.WriteLine(e.Message); System.Console.WriteLine("Press any key to exit..."); System.Console.ReadKey(); return; } catch (KeyNotFoundException e) { System.Console.Error.WriteLine(e.Message); System.Console.WriteLine("Press any key to exit..."); System.Console.ReadKey(); return; } spawnData.PluginSearch.PluginTypes.Add(typeof(Login)); server = new DarkRiftServer(spawnData); server.Start(); new Thread(new ThreadStart(ConsoleLoop)).Start(); while (true) { //server.DispatcherWaitHandle.WaitOne(); Thread.Sleep(1000 / serverTickRate); server.ExecuteDispatcherTasks(); OnTick?.Invoke(null, server.ClientManager); } }
public void Load() { _recv = OnPluginRecv; _send = OnPluginSend; _getPacketLength = PacketsTable.GetPacketLength; _getPlayerPosition = GetPlayerPosition; _castSpell = GameActions.CastSpell; _getStaticImage = GetStaticImage; _getUoFilePath = GetUOFilePath; _requestMove = RequestMove; _setTitle = SetWindowTitle; //IntPtr headerPtr = Marshal.AllocHGlobal(4 + 8 * 18); // 256 ? //Marshal.WriteInt32(headerPtr, (int)FileManager.ClientVersion); //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_recv)); //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_send)); //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_getPacketLength)); //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_getPlayerPosition)); //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_castSpell)); //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_getStaticImage)); //Marshal.WriteIntPtr(headerPtr, SDL.SDL_GL_GetCurrentWindow()); //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_getUoFilePath)); SDL.SDL_SysWMinfo info = new SDL.SDL_SysWMinfo(); SDL.SDL_VERSION(out info.version); SDL.SDL_GetWindowWMInfo(SDL.SDL_GL_GetCurrentWindow(), ref info); IntPtr hwnd = IntPtr.Zero; if (info.subsystem == SDL.SDL_SYSWM_TYPE.SDL_SYSWM_WINDOWS) { hwnd = info.info.win.window; } PluginHeader header = new PluginHeader { ClientVersion = (int)FileManager.ClientVersion, Recv = Marshal.GetFunctionPointerForDelegate(_recv), Send = Marshal.GetFunctionPointerForDelegate(_send), GetPacketLength = Marshal.GetFunctionPointerForDelegate(_getPacketLength), GetPlayerPosition = Marshal.GetFunctionPointerForDelegate(_getPlayerPosition), CastSpell = Marshal.GetFunctionPointerForDelegate(_castSpell), GetStaticImage = Marshal.GetFunctionPointerForDelegate(_getStaticImage), HWND = hwnd, GetUOFilePath = Marshal.GetFunctionPointerForDelegate(_getUoFilePath), RequestMove = Marshal.GetFunctionPointerForDelegate(_requestMove), SetTitle = Marshal.GetFunctionPointerForDelegate(_setTitle) }; void *func = &header; try { IntPtr assptr = SDL2EX.SDL_LoadObject(_path); Log.Message(LogTypes.Trace, $"assembly: {assptr}"); if (assptr == IntPtr.Zero) { throw new Exception("Invalid Assembly, Attempting managed load."); } Log.Message(LogTypes.Trace, $"Searching for 'Install' entry point - {assptr}"); IntPtr installPtr = SDL2EX.SDL_LoadFunction(assptr, "Install"); Log.Message(LogTypes.Trace, $"Entry point: {installPtr}"); if (installPtr == IntPtr.Zero) { throw new Exception("Invalid Entry Point, Attempting managed load."); } Marshal.GetDelegateForFunctionPointer <OnInstall>(installPtr)(ref func); } catch { try { var asm = Assembly.LoadFile(_path); var type = asm.GetType("Assistant.Engine"); if (type == null) { Log.Message(LogTypes.Error, $"Unable to find Plugin Type, API requires the public class Engine in namespace Assistant."); return; } var meth = type.GetMethod("Install", BindingFlags.Public | BindingFlags.Static); if (meth == null) { Log.Message(LogTypes.Error, $"Engine class missing public static Install method Needs 'public static unsafe void Install(PluginHeader *plugin)' "); return; } meth.Invoke(null, new object[] { (IntPtr)func }); } catch (Exception err) { Log.Message(LogTypes.Error, $"Invalid plugin specified. {err} {err.StackTrace}"); return; } } if (header.OnRecv != IntPtr.Zero) { _onRecv = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header.OnRecv); } if (header.OnSend != IntPtr.Zero) { _onSend = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header.OnSend); } if (header.OnHotkeyPressed != IntPtr.Zero) { _onHotkeyPressed = Marshal.GetDelegateForFunctionPointer <OnHotkey>(header.OnHotkeyPressed); } if (header.OnMouse != IntPtr.Zero) { _onMouse = Marshal.GetDelegateForFunctionPointer <OnMouse>(header.OnMouse); } if (header.OnPlayerPositionChanged != IntPtr.Zero) { _onUpdatePlayerPosition = Marshal.GetDelegateForFunctionPointer <OnUpdatePlayerPosition>(header.OnPlayerPositionChanged); } if (header.OnClientClosing != IntPtr.Zero) { _onClientClose = Marshal.GetDelegateForFunctionPointer <OnClientClose>(header.OnClientClosing); } if (header.OnInitialize != IntPtr.Zero) { _onInitialize = Marshal.GetDelegateForFunctionPointer <OnInitialize>(header.OnInitialize); } if (header.OnConnected != IntPtr.Zero) { _onConnected = Marshal.GetDelegateForFunctionPointer <OnConnected>(header.OnConnected); } if (header.OnDisconnected != IntPtr.Zero) { _onDisconnected = Marshal.GetDelegateForFunctionPointer <OnDisconnected>(header.OnDisconnected); } if (header.OnFocusGained != IntPtr.Zero) { _onFocusGained = Marshal.GetDelegateForFunctionPointer <OnFocusGained>(header.OnFocusGained); } if (header.OnFocusLost != IntPtr.Zero) { _onFocusLost = Marshal.GetDelegateForFunctionPointer <OnFocusLost>(header.OnFocusLost); } if (header.Tick != IntPtr.Zero) { _tick = Marshal.GetDelegateForFunctionPointer <OnTick>(header.Tick); } IsValid = true; //Marshal.FreeHGlobal(headerPtr); _onInitialize?.Invoke(); }
private void FixedUpdate() { OnTick.Invoke(Time.deltaTime); }
public void Tick() { OnTick?.Invoke(); }
/// Run the next instruction public void Tick() { if (tickCounter > sleepTickThreshold) { Instruction i; int newPC; if (program == null || program.instructions.Count == 0) { i = NOP; newPC = 0; } else { i = program.instructions[pc]; newPC = (pc + 1) % program.instructions.Count; } switch (i.opCode) { // Control flow case OpCode.NOP: break; case OpCode.BUN: newPC = GetArgValue(i.args[0]) % program.instructions.Count; break; case OpCode.BEQ: if (GetArgValue(i.args[1]) == GetArgValue(i.args[2])) { newPC = GetArgValue(i.args[0]) % program.instructions.Count; } break; case OpCode.BNE: if (GetArgValue(i.args[1]) != GetArgValue(i.args[2])) { newPC = GetArgValue(i.args[0]) % program.instructions.Count; } break; case OpCode.BLT: if (GetArgValue(i.args[1]) < GetArgValue(i.args[2])) { newPC = GetArgValue(i.args[0]) % program.instructions.Count; } break; case OpCode.BLE: if (GetArgValue(i.args[1]) <= GetArgValue(i.args[2])) { newPC = GetArgValue(i.args[0]) % program.instructions.Count; } break; case OpCode.BGT: if (GetArgValue(i.args[1]) > GetArgValue(i.args[2])) { newPC = GetArgValue(i.args[0]) % program.instructions.Count; } break; case OpCode.BGE: if (GetArgValue(i.args[1]) >= GetArgValue(i.args[2])) { newPC = GetArgValue(i.args[0]) % program.instructions.Count; } break; case OpCode.BRN: if (GetArgValue(i.args[1]) > UnityEngine.Random.Range(0, 100)) { newPC = GetArgValue(i.args[0]) % program.instructions.Count; } break; case OpCode.CSR: if (callStack.Count > STACK_SIZE) { Debug.LogWarning("Stack limit reached on CSR call"); break; } callStack.Push(newPC); newPC = GetArgValue(i.args[0]) % program.instructions.Count; break; case OpCode.RSR: if (callStack.Count == 0) { Debug.LogWarning("Empty callstack on RSR call"); break; } newPC = callStack.Pop(); break; // Data manipulation case OpCode.SET: regs[i.args[0].val] = GetArgValue(i.args[1]); if (i.args[0].val > NUM_LOCAL_REGS) { BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID); } break; case OpCode.ADD: regs[i.args[0].val] = GetArgValue(i.args[1]) + GetArgValue(i.args[2]); if (i.args[0].val > NUM_LOCAL_REGS) { BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID); } break; case OpCode.SUB: regs[i.args[0].val] = GetArgValue(i.args[1]) - GetArgValue(i.args[2]); if (i.args[0].val > NUM_LOCAL_REGS) { BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID); } break; case OpCode.MUL: regs[i.args[0].val] = GetArgValue(i.args[1]) * GetArgValue(i.args[2]); if (i.args[0].val > NUM_LOCAL_REGS) { BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID); } break; case OpCode.DIV: regs[i.args[0].val] = GetArgValue(i.args[1]) / GetArgValue(i.args[2]); if (i.args[0].val > NUM_LOCAL_REGS) { BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID); } break; case OpCode.MOD: regs[i.args[0].val] = GetArgValue(i.args[1]) % GetArgValue(i.args[2]); if (i.args[0].val > NUM_LOCAL_REGS) { BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID); } break; case OpCode.ABS: regs[i.args[0].val] = Math.Abs(GetArgValue(i.args[1])); if (i.args[0].val > NUM_LOCAL_REGS) { BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID); } break; // Sensing case OpCode.TAR: regs[i.args[0].val] = BotManager.Instance.FindTarget(controller, (BotManager.DistanceType)GetArgValue(i.args[1]), (BotManager.TargetType)GetArgValue(i.args[2])); break; case OpCode.HED: regs[i.args[0].val] = BotManager.Instance.GetTargetHeading(controller, GetArgValue(i.args[1])); break; case OpCode.DIS: regs[i.args[0].val] = BotManager.Instance.GetTargetDistance(controller, GetArgValue(i.args[1])); break; case OpCode.SCN: regs[i.args[0].val] = controller.Scan((Scanner.Target)GetArgValue(i.args[1]), GetArgValue(i.args[2]), GetArgValue(i.args[3]), GetArgValue(i.args[4])); break; // Actions case OpCode.DRV: controller.Drive((Driver.Direction)GetArgValue(i.args[0]), GetArgValue(i.args[1]), GetArgValue(i.args[2]) != 0); break; case OpCode.TRN: controller.Turn((Turner.Direction)GetArgValue(i.args[0]), GetArgValue(i.args[1]), GetArgValue(i.args[2]) != 0); break; case OpCode.SHT: controller.Shoot(GetArgValue(i.args[0]) == 1); break; case OpCode.SLP: sleepTickThreshold = tickCounter + GetArgValue(i.args[0]); break; default: Debug.LogWarning("Unhandled OpCode " + i.opCode.ToString()); break; } pc = newPC; } ++tickCounter; OnTick?.Invoke(); }
private void OnLogicUpdate() { OnTick?.Invoke(); }
internal static void Tick() { if (OnTick!=null) OnTick.Invoke(); }
private void OnAdvise(object sender, DdeAdviseEventArgs args) { //========================================================================================= //Log(args.Item + " " + args.Text); // get the DDE feed string[] fxData = (args.Item + " " + args.Text).Split(new char[] { ' ' }); Tick tick = null; try{ tick = new Tick() { //EURUSD 2014/05/06 23:59 1.34455 1.34456 symbol = fxData[0], date = DateTime.Parse(fxData[1] + " " + fxData[2]), bid = double.Parse(fxData[3]), ask = double.Parse(fxData[4]) }; } catch (Exception) { Log("Invalid tick data"); } //-- Log Price -- works -- prints bid price for All symbol // Log(fxData[3]); Double checked July 2014 - so data is local and present here, //------------- //------------------------------------------------ // Bind Data // chart1.Series["Series1"].Points.DataBindXY(fxData[1], fxData[3]); // chart1.Series["Series1"].Points.DataBindXY(fxData[2], fxData[3]); // chart1.Series["Series1"].Points.DataBind(dataSource, fxData[2], fxData[3],); // string xVal = fxData[2];// Hours:Minutes == 23:59 // string YVal = fxData[3]; // chart1.Series["Series1"].Points.DataBindXY(xVal, YVal); // chart1.Series["Series1"].Points.AddXY(xVal, YVal); // chart1.Series[0].Points.AddXY(date, bid); //--------------------------------------------------- // create data source if (tick != null) { if (dataSource.ContainsKey(tick.symbol)) { dataSource[tick.symbol].Insert(0, tick.bid); // Log(tick.bid); } else { dataSource.Add(tick.symbol, new List <double>() { tick.bid }); } if (OnTick != null) { OnTick.Invoke(tick); } } //------------------------------ }
// ReSharper disable once UnusedMember.Local private void Update() { try { if (BoltNetwork.isRunning && LocalPlayer.Entity != null && LocalPlayer.Entity.isAttached) { PlayerName = LocalPlayer.Entity.GetState <IPlayerState>().name; } } catch (Exception) { // ignored } if (ChatBox.IsChatOpen) { return; } if (OnTick != null) { try { foreach (var action in OnTick.GetInvocationList()) { try { action.DynamicInvoke(this, EventArgs.Empty); } catch (Exception e) { Logger.Exception($"Exception while notifying {nameof(OnTick)} listener: " + action.GetType().Name, e); } } } catch (Exception e) { Logger.Exception($"Exception while looping over {nameof(OnTick)} listeners", e); } } if (BoltNetwork.isRunning) { // Visible player if (Menu.Values.Self.Visible && LocalPlayer.Entity != null && !LocalPlayer.Entity.isAttached) { Utility.AttachLocalPlayer(); } // Invisible player else if (!Menu.Values.Self.Visible && LocalPlayer.Entity != null && LocalPlayer.Entity.isAttached) { Utility.DetachLocalPlayer(); } // Add fire trail to movement if (Menu.Values.Self.FireTrail) { var feetPos = LocalPlayer.Transform.position - new Vector3(0, 4, 0); if (Vector3.Distance(LastFirePos, feetPos) > 2 || Environment.TickCount - LastFireTime > 5000) { LastFirePos = feetPos; LastFireTime = Environment.TickCount; BoltPrefabsHelper.Spawn(BoltPrefabs.Fire, feetPos, LocalPlayer.Transform.rotation); } } } if (FreeCam && !_lastFreeCam) { LocalPlayer.CamFollowHead.enabled = false; LocalPlayer.CamRotator.enabled = false; LocalPlayer.MainRotator.enabled = false; LocalPlayer.FpCharacter.enabled = false; _lastFreeCam = true; } if (!FreeCam && _lastFreeCam) { LocalPlayer.CamFollowHead.enabled = true; LocalPlayer.CamRotator.enabled = true; LocalPlayer.MainRotator.enabled = true; LocalPlayer.FpCharacter.enabled = true; _lastFreeCam = false; } if (FreeCam && !Menu.IsOpen && !LocalPlayer.FpCharacter.Locked) { var button1 = Input.GetButton("Crouch"); var button2 = Input.GetButton("Run"); var button3 = Input.GetButton("Jump"); var multiplier = 0.1f; if (button2) { multiplier = 2f; } var vector3 = Camera.main.transform.rotation * ( new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical") ) * multiplier); if (button3) { vector3.y += multiplier; } if (button1) { vector3.y -= multiplier; } Camera.main.transform.position += vector3; var rotationX = Camera.main.transform.localEulerAngles.y + Input.GetAxis("Mouse X") * 15f; _rotationY += Input.GetAxis("Mouse Y") * 15f; _rotationY = Mathf.Clamp(_rotationY, -80f, 80f); Camera.main.transform.localEulerAngles = new Vector3(-_rotationY, rotationX, 0); } if (ModAPI.Input.GetButtonDown("FreeCam")) { FreeCam = !FreeCam; } if (ModAPI.Input.GetButton("SphereAction")) { SphereAction?.OnPrepare(); } else { SphereAction?.OnTick(); } if (LocalPlayer.Stats != null) { if (Menu.Values.Stats.FixBodyTemp) { LocalPlayer.Stats.BodyTemp = Menu.Values.Stats.FixedBodyTemp; } if (Menu.Values.Stats.FixBatteryCharge) { LocalPlayer.Stats.BatteryCharge = Menu.Values.Stats.FixedBatteryCharge; } if (Menu.Values.Stats.FixEnergy) { LocalPlayer.Stats.Energy = Menu.Values.Stats.FixedEnergy; } if (Menu.Values.Stats.FixHealth) { LocalPlayer.Stats.Health = Menu.Values.Stats.FixedHealth; } if (Menu.Values.Stats.FixStamina) { LocalPlayer.Stats.Stamina = Menu.Values.Stats.FixedStamina; } if (Menu.Values.Stats.FixFullness) { LocalPlayer.Stats.Fullness = Menu.Values.Stats.FixedFullness; } if (Menu.Values.Stats.FixStarvation) { LocalPlayer.Stats.Starvation = Menu.Values.Stats.FixedStarvation; } if (Menu.Values.Stats.FixThirst) { LocalPlayer.Stats.Thirst = Menu.Values.Stats.FixedThirst; } } if (BoltNetwork.isRunning && Menu.Values.Self.InstaRevive) { foreach (var player in PlayerManager.Players) { var triggerObject = player.DeadTriggerObject; if (triggerObject != null && triggerObject.activeSelf) { var trigger = triggerObject.GetComponent <RespawnDeadTrigger>(); //Logger.Info("Reviving " + player.Entity.GetState<IPlayerState>().name); // Send revive packet var playerHealed = PlayerHealed.Create(GlobalTargets.Others); playerHealed.HealingItemId = trigger._healItemId; playerHealed.HealTarget = player.Entity; PacketQueue.Add(playerHealed); // Set revive trigger inactive trigger.SendMessage("SetActive", false); } } } }
private static void UpdateTimer(object state) { OnTick?.Invoke(null, EventArgs.Empty); }
private void Update() { OnTick?.Invoke(Time.deltaTime); OnTickNoDelta?.Invoke(); }
public Player() { _timer.Tick += (o, e) => OnTick?.Invoke(this, new PlayerEventArgs(PercentProgress, Duration, Position)); LoadedBehavior = MediaState.Manual; UnloadedBehavior = MediaState.Manual; }
private void OnTick_callback() { OnTick?.Invoke(this); }
public void Tick() { TickCount++; OnTick?.Invoke(); }
public void Load() { _recv = OnPluginRecv; _send = OnPluginSend; _recv_new = OnPluginRecv_new; _send_new = OnPluginSend_new; _getPacketLength = PacketsTable.GetPacketLength; _getPlayerPosition = GetPlayerPosition; _castSpell = GameActions.CastSpell; _getStaticImage = GetStaticImage; _getUoFilePath = GetUOFilePath; _requestMove = RequestMove; _setTitle = SetWindowTitle; SDL.SDL_SysWMinfo info = new SDL.SDL_SysWMinfo(); SDL.SDL_VERSION(out info.version); SDL.SDL_GetWindowWMInfo(SDL.SDL_GL_GetCurrentWindow(), ref info); IntPtr hwnd = IntPtr.Zero; if (info.subsystem == SDL.SDL_SYSWM_TYPE.SDL_SYSWM_WINDOWS) { hwnd = info.info.win.window; } PluginHeader header = new PluginHeader { ClientVersion = (int)Client.Version, Recv = Marshal.GetFunctionPointerForDelegate(_recv), Send = Marshal.GetFunctionPointerForDelegate(_send), GetPacketLength = Marshal.GetFunctionPointerForDelegate(_getPacketLength), GetPlayerPosition = Marshal.GetFunctionPointerForDelegate(_getPlayerPosition), CastSpell = Marshal.GetFunctionPointerForDelegate(_castSpell), GetStaticImage = Marshal.GetFunctionPointerForDelegate(_getStaticImage), HWND = hwnd, GetUOFilePath = Marshal.GetFunctionPointerForDelegate(_getUoFilePath), RequestMove = Marshal.GetFunctionPointerForDelegate(_requestMove), SetTitle = Marshal.GetFunctionPointerForDelegate(_setTitle), Recv_new = Marshal.GetFunctionPointerForDelegate(_recv_new), Send_new = Marshal.GetFunctionPointerForDelegate(_send_new), SDL_Window = Client.Game.Window.Handle }; void *func = &header; if (Environment.OSVersion.Platform != PlatformID.Unix && Environment.OSVersion.Platform != PlatformID.MacOSX) { UnblockPath(Path.GetDirectoryName(_path)); } try { IntPtr assptr = Native.LoadLibrary(_path); Log.Trace($"assembly: {assptr}"); if (assptr == IntPtr.Zero) { throw new Exception("Invalid Assembly, Attempting managed load."); } Log.Trace($"Searching for 'Install' entry point - {assptr}"); IntPtr installPtr = Native.GetProcessAddress(assptr, "Install"); Log.Trace($"Entry point: {installPtr}"); if (installPtr == IntPtr.Zero) { throw new Exception("Invalid Entry Point, Attempting managed load."); } Marshal.GetDelegateForFunctionPointer <OnInstall>(installPtr)(func); Console.WriteLine(">>> ADDRESS {0}", header.OnInitialize); } catch { try { var asm = Assembly.LoadFile(_path); var type = asm.GetType("Assistant.Engine"); if (type == null) { Log.Error( "Unable to find Plugin Type, API requires the public class Engine in namespace Assistant."); return; } var meth = type.GetMethod("Install", BindingFlags.Public | BindingFlags.Static); if (meth == null) { Log.Error("Engine class missing public static Install method Needs 'public static unsafe void Install(PluginHeader *plugin)' "); return; } meth.Invoke(null, new object[] { (IntPtr)func }); } catch (Exception err) { Log.Error( $"Plugin threw an error during Initialization. {err.Message} {err.StackTrace} {err.InnerException?.Message} {err.InnerException?.StackTrace}"); return; } } if (header.OnRecv != IntPtr.Zero) { _onRecv = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header.OnRecv); } if (header.OnSend != IntPtr.Zero) { _onSend = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header.OnSend); } if (header.OnHotkeyPressed != IntPtr.Zero) { _onHotkeyPressed = Marshal.GetDelegateForFunctionPointer <OnHotkey>(header.OnHotkeyPressed); } if (header.OnMouse != IntPtr.Zero) { _onMouse = Marshal.GetDelegateForFunctionPointer <OnMouse>(header.OnMouse); } if (header.OnPlayerPositionChanged != IntPtr.Zero) { _onUpdatePlayerPosition = Marshal.GetDelegateForFunctionPointer <OnUpdatePlayerPosition>(header.OnPlayerPositionChanged); } if (header.OnClientClosing != IntPtr.Zero) { _onClientClose = Marshal.GetDelegateForFunctionPointer <OnClientClose>(header.OnClientClosing); } if (header.OnInitialize != IntPtr.Zero) { _onInitialize = Marshal.GetDelegateForFunctionPointer <OnInitialize>(header.OnInitialize); } if (header.OnConnected != IntPtr.Zero) { _onConnected = Marshal.GetDelegateForFunctionPointer <OnConnected>(header.OnConnected); } if (header.OnDisconnected != IntPtr.Zero) { _onDisconnected = Marshal.GetDelegateForFunctionPointer <OnDisconnected>(header.OnDisconnected); } if (header.OnFocusGained != IntPtr.Zero) { _onFocusGained = Marshal.GetDelegateForFunctionPointer <OnFocusGained>(header.OnFocusGained); } if (header.OnFocusLost != IntPtr.Zero) { _onFocusLost = Marshal.GetDelegateForFunctionPointer <OnFocusLost>(header.OnFocusLost); } if (header.Tick != IntPtr.Zero) { _tick = Marshal.GetDelegateForFunctionPointer <OnTick>(header.Tick); } if (header.OnRecv_new != IntPtr.Zero) { _onRecv_new = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv_new>(header.OnRecv_new); } if (header.OnSend_new != IntPtr.Zero) { _onSend_new = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv_new>(header.OnSend_new); } if (header.OnDrawCmdList != IntPtr.Zero) { _draw_cmd_list = Marshal.GetDelegateForFunctionPointer <OnDrawCmdList>(header.OnDrawCmdList); } if (header.OnWndProc != IntPtr.Zero) { _on_wnd_proc = Marshal.GetDelegateForFunctionPointer <OnWndProc>(header.OnWndProc); } IsValid = true; _onInitialize?.Invoke(); }
protected void DoTick() { OnTick?.Invoke(); }