public override void Simulate() { try { if (!DedicatedServer) { EntityControlUpdate(); CameraMatrix = Session.Camera.WorldMatrix; CameraPos = CameraMatrix.Translation; PlayerPos = Session.Player?.Character?.WorldAABB.Center ?? Vector3D.Zero; } if (GameLoaded) { DsUtil.Start("ai"); AiLoop(); DsUtil.Complete("ai", true); DsUtil.Start("charge"); if (ChargingWeapons.Count > 0) { UpdateChargeWeapons(); } DsUtil.Complete("charge", true); DsUtil.Start("acquire"); if (AcquireTargets.Count > 0) { CheckAcquire(); } DsUtil.Complete("acquire", true); DsUtil.Start("shoot"); if (ShootingWeapons.Count > 0) { ShootWeapons(); } DsUtil.Complete("shoot", true); } if (!DedicatedServer && !WheelUi.WheelActive && !InMenu) { UpdateLocalAiAndCockpit(); if (UiInput.PlayerCamera && ActiveCockPit != null) { TargetSelection(); } } DsUtil.Start("projectiles1"); Projectiles.Stage1(); DsUtil.Complete("projectiles1", true); } catch (Exception ex) { Log.Line($"Exception in SessionSim: {ex}"); } }