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
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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
        }
Beispiel #5
0
 private unsafe AtkUnitBase *GetAddonFromAgent(AgentInterface *agentInterface)
 {
     return(agentInterface->AddonId == 0 ? null : AtkStage.GetSingleton()->RaptureAtkUnitManager->GetAddonById((ushort)agentInterface->AddonId));
 }