public bool CanCast(WoWUnit target = null, bool checkrange = false) { WoWLocalPlayer Me = Manager.LocalPlayer; if (!IsReady) { return(false); } if (Me.IsCasting) { return(false); } if (IsUsing) { return(false); } var r = WoWScript.Execute("IsUsableSpell(select(1, GetSpellInfo(" + this.Id + ")))"); if (r.Count <= 0 || !r[0].Equals("1")) { return(false); } if (checkrange && target != null) { if (IsMeleeRange && !Me.IsWithinMeleeRangeOf(target)) { return(false); } else if (IsRanged && (target.Distance < MinRange || target.Distance > MaxRange)) { return(false); } } return(true); }
public void Direct3D_EndScene() { ulong localPlayerGuid = _getLocalPlayer(); if (localPlayerGuid == 0) return; IntPtr localPlayerPointer = _getObjectByGuid(localPlayerGuid, -1); if (localPlayerPointer == IntPtr.Zero) return; LocalPlayer = new WoWLocalPlayer(localPlayerPointer); foreach (WoWObject obj in _objects.Values) obj.Pointer = IntPtr.Zero; _enumVisibleObjects(_ourCallback, 0); foreach (var pair in _objects.Where(p => p.Value.Pointer == IntPtr.Zero).ToList()) _objects.Remove(pair.Key); if (Direct3D.FrameCount == 0) { Log.WriteLine("ObjectManager: {0} objects", _objects.Count); } Objects = _objects.Values.ToList(); }