Flightor has been updated:
Now correctly detects all model collision and not just terrain collision
No longer detects the zone ceiling as being indoors
No longer causes disconnects from navigation server when attempting to find a landing position for a 'indoor' area.
FlyTo IgnoreIndoors="True", now serves its original purpose disabling this check that would previously end up disconnecting the player from the navserver
No longer fires anti-stuck while surfacing/diving
Flightor can now dive and surface by specifying a XYZ above or below the water.
AtkAddonControl.IsVisible added
AtkAddonControl.Bounds added
3D overlay has two new settings, Use Z-buffering which will hide the boxes et al behind game collision and hide overlay behind game gui.
By default the first is disabled due to the performance impact, and the second one is enabled.
CanCraft tag will now use the Name parameter over the id parameter if it is supplied.
Update ItemUiCategory enum
internal AtkAddonControl WindowByName => RaptureAtkUnitManager.GetWindowByName(Name);
public virtual bool IsVisible()
{
if (WindowByName != null) return WindowByName.IsVisible;
return false;
}
await Coroutine.Wait(5000, () => RetainerList.Instance.IsOpen);
await Coroutine.Wait(5000, () => RetainerList.Instance.IsVisible());
Theres probably an additional delay due to spinning up the coroutine.Through some testing I've found an odd thing with IsVisible/IsOpen. I was testing to see if I could remove the extra `await Coroutine.Sleep(###)` from my retainers botbase so I added it to my RemoteWindow class as
Code:internal AtkAddonControl WindowByName => RaptureAtkUnitManager.GetWindowByName(Name); public virtual bool IsVisible() { if (WindowByName != null) return WindowByName.IsVisible; return false; }
So if I use the summoning bell then `await Coroutine.Wait(10000, () => RetainerList.Instance.IsVisible());` it still triggers too fast and SendAction causes the game to crash but even though my IsVisable() checks to see if the window is open before IsVisible. This following code surprisingly works without an extra sleep afterwards. I'm not sure if it's the extra ms it takes for wait code takes to execute or possibly the yields Wait does...fundamentally it should be the same logic check
not a complaint, just an observation since I know you were looking for a way to see if the window was fully loadedCode:await Coroutine.Wait(5000, () => RetainerList.Instance.IsOpen); await Coroutine.Wait(5000, () => RetainerList.Instance.IsVisible());
var renderFlag = Core.Memory.Read<uint>(window.Pointer + 0x180) & 0xF00000u
public virtual bool IsVisible()
{
if (WindowByName != null)
return ((Core.Memory.Read<uint>(RetainerList.Instance.WindowByName.Pointer + 0x180) & 0xF00000u) == 3145728);
return false;
}
foreach (var leve in LeveManager.Leves)
Log(leve);
Name: GlobalId:42696 Step:37
Name: GlobalId:42696 Step:37
Name: GlobalId:42696 Step:37
Name: GlobalId:42696 Step:37
Name: GlobalId:42696 Step:37
Name: GlobalId:42696 Step:37
Name: GlobalId:42696 Step:37
Name: GlobalId:42696 Step:37
RaptureAtkUnitManager.GetWindowByName now returns null for windows that have not finished loading
RaptureAtkUnitManager.GetWindowByName(string name, bool ignoreVisibility) added for previous functionality