Pictomancy 0.0.1
dotnet add package Pictomancy --version 0.0.1
NuGet\Install-Package Pictomancy -Version 0.0.1
<PackageReference Include="Pictomancy" Version="0.0.1" />
<PackageVersion Include="Pictomancy" Version="0.0.1" />
<PackageReference Include="Pictomancy" />
paket add Pictomancy --version 0.0.1
#r "nuget: Pictomancy, 0.0.1"
#:package Pictomancy@0.0.1
#addin nuget:?package=Pictomancy&version=0.0.1
#tool nuget:?package=Pictomancy&version=0.0.1
FFXIV Pictomancy
Pictomancy is a library for drawing 3D world overlays and VFX in Dalamud plugins. Pictomancy has an ImGui-like interface that operates in world space instead of a 2D canvas. Pictomancy simplifies the hard parts of 3D overlays by correctly clipping objects behind the camera and clipping around the native UI.
Pictomancy is still in development and does not have a stable API. Use at your own risk.
Installation
Nuget package: https://www.nuget.org/packages/Pictomancy
Use as a git sub-module:
git submodule add https://github.com/sourpuh/ffxiv_pictomancy
Use
Library initialization:
public MyPlugin(DalamudPluginInterface pluginInterface)
{
PictoService.Initialize(pluginInterface);
... Your Code Here ...
}
public void Dispose()
{
PictoService.Dispose();
... Your Code Here ...
}
Drawing an ImGui overlay with DirectX Renderer
using (var drawList = PictoService.Draw())
{
if (drawList == null)
return;
// Draw a circle around a GameObject's hitbox
Vector3 worldPosition = gameObject.Position;
float radius = gameObject.HitboxRadius;
drawList.AddCircleFilled(worldPosition, radius, fillColor);
drawList.AddCircle(worldPosition, radius, outlineColor);
}
Drawing with in-game VFX
You must specify an ID for each element you draw. IDs should be consistent across frames and unique for each VFX with the same path.
VFX with the same ID and path are retained when drawn in consecutive frames. If the ID is specified in consecutive frames, the VFX is updated to match the new parameters. If the ID is not specified in consecutive frames, the VFX is destroyed.
// Draw a circle omen VFX on a GameObject's hitbox
PictoService.VfxRenderer.AddOmen($"{gameobject.EntityId}", "general01bf", gameObject.Position, gameObject.HitboxRadius);
// Draw a tankbuster lockon VFX on a GameObject
PictoService.VfxRenderer.AddLockon($"{gameobject.EntityId}", "tank_lockon01i", gameobject);
// Draw a tether channeling VFX between two GameObjects
PictoService.VfxRenderer.AddChanneling($"{gameobject.EntityId}", "chn_nomal01f", gameobject1, gameobject2);
If you want to draw basic Omen shapes, there are helpers provided to draw circles, lines, cones, and donuts. If the method returns void, it will always successfully draw. If the method returns a boolean, it will return false if it did not find an Omen to match your desired shape.
// Draw a circle around a GameObject's hitbox using the AddCircle helper
PictoService.VfxRenderer.AddCircle($"{gameobject.EntityId}", gameObject.Position, gameObject.HitboxRadius);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0-windows7.0 is compatible. net10.0-windows was computed. |
-
net9.0-windows7.0
- SharpDX.D3DCompiler (>= 4.2.0)
- SharpDX.Direct2D1 (>= 4.2.0)
- SharpDX.Direct3D11 (>= 4.2.0)
- SharpDX.Mathematics (>= 4.2.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Pictomancy:
Package | Downloads |
---|---|
FFXIVOcelot
Package Description |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Pictomancy:
Repository | Stars |
---|---|
ffxivcode/AutoDuty
Dalamud Plugin for FFXIV - AutoDuty
|