private void Update(bool reset = false) { var stage = AtkStage.GetSingleton(); var loadedUnitsList = &stage->RaptureAtkUnitManager->AtkUnitManager.AllLoadedUnitsList; var addonList = &loadedUnitsList->AtkUnitEntries; #if DEBUG PerformanceMonitor.Begin(); #endif for (var i = 0; i < loadedUnitsList->Count; i++) { var addon = addonList[i]; var name = Marshal.PtrToStringAnsi(new IntPtr(addon->Name)); if (name != null && name.StartsWith("JobHud")) { if (reset || Config.ShowInDuty && Service.Condition[ConditionFlag.BoundByDuty]) { if (addon->UldManager.NodeListCount == 0) { addon->UldManager.UpdateDrawNodeList(); } } else if (Config.ShowInCombat && Service.Condition[ConditionFlag.InCombat]) { outOfCombatTimer.Restart(); if (addon->UldManager.NodeListCount == 0) { addon->UldManager.UpdateDrawNodeList(); } } else if (Config.ShowInCombat && outOfCombatTimer.ElapsedMilliseconds < Config.CombatBuffer * 1000) { if (addon->UldManager.NodeListCount == 0) { addon->UldManager.UpdateDrawNodeList(); } } else if (Config.ShowWhileWeaponDrawn && Service.ClientState.LocalPlayer != null && Service.ClientState.LocalPlayer.StatusFlags.HasFlag(StatusFlags.WeaponOut)) { if (addon->UldManager.NodeListCount == 0) { addon->UldManager.UpdateDrawNodeList(); } } else { addon->UldManager.NodeListCount = 0; } } } #if DEBUG PerformanceMonitor.End(); #endif }
private List <AddonResult> GetAtkUnitBaseAtPosition(Vector2 position) { SimpleLog.Log($">> GetAtkUnitBaseAtPosition"); var list = new List <AddonResult>(); var stage = AtkStage.GetSingleton(); var unitManagers = &stage->RaptureAtkUnitManager->AtkUnitManager.DepthLayerOneList; for (var i = 0; i < UnitListCount; i++) { var unitManager = &unitManagers[i]; var unitBaseArray = &(unitManager->AtkUnitEntries); for (var j = 0; j < unitManager->Count; j++) { var unitBase = unitBaseArray[j]; if (unitBase->RootNode == null) { continue; } if (!(unitBase->IsVisible && unitBase->RootNode->IsVisible)) { continue; } var addonResult = new AddonResult() { UnitBase = unitBase }; if (list.Contains(addonResult)) { continue; } if (unitBase->X > position.X || unitBase->Y > position.Y) { continue; } if (unitBase->X + unitBase->RootNode->Width < position.X) { continue; } if (unitBase->Y + unitBase->RootNode->Height < position.Y) { continue; } addonResult.Nodes = GetAtkResNodeAtPosition(unitBase->UldManager, position); list.Add(addonResult); } } SimpleLog.Log($"<< GetAtkUnitBaseAtPosition"); return(list); }
private unsafe string?GetParentAddonName(AtkUnitBase *addonInterface) { var parentAddonId = addonInterface->ContextMenuParentID; if (parentAddonId == 0) { return(null); } var atkStage = AtkStage.GetSingleton(); var parentAddon = atkStage->RaptureAtkUnitManager->GetAddonById(parentAddonId); return(Marshal.PtrToStringUTF8(new IntPtr(parentAddon->Name))); }
private void Update(bool reset = false) { var stage = AtkStage.GetSingleton(); var loadedUnitsList = &stage->RaptureAtkUnitManager->AtkUnitManager.AllLoadedUnitsList; var addonList = &loadedUnitsList->AtkUnitEntries; #if DEBUG PerformanceMonitor.Begin(); #endif for (var i = 0; i < loadedUnitsList->Count; i++) { var addon = addonList[i]; var name = Marshal.PtrToStringAnsi(new IntPtr(addon->Name)); if (name != null && name.StartsWith("JobHud")) { if (reset || Config.ShowInDuty && Service.Condition[ConditionFlag.BoundByDuty]) { if (addon->UldManager.NodeListCount == 0) { addon->UldManager.UpdateDrawNodeList(); } } else if (Config.ShowInCombat && Service.Condition[ConditionFlag.InCombat]) { if (addon->UldManager.NodeListCount == 0) { addon->UldManager.UpdateDrawNodeList(); } } else { addon->UldManager.NodeListCount = 0; } } } #if DEBUG PerformanceMonitor.End(); #endif }
private unsafe AtkUnitBase *GetAddonFromAgent(AgentInterface *agentInterface) { return(agentInterface->AddonId == 0 ? null : AtkStage.GetSingleton()->RaptureAtkUnitManager->GetAddonById((ushort)agentInterface->AddonId)); }