Initial commit: Complete open-source Decal rebuild
All 5 phases of the open-source Decal rebuild: Phase 1: 14 decompiled .NET projects (Interop.*, Adapter, FileService, DecalUtil) Phase 2: 10 native DLLs rewritten as C# COM servers with matching GUIDs - DecalDat, DHS, SpellFilter, DecalInput, DecalNet, DecalFilters - Decal.Core, DecalControls, DecalRender, D3DService Phase 3: C++ shims for Inject.DLL (D3D9 hooking) and LauncherHook.DLL Phase 4: DenAgent WinForms tray application Phase 5: WiX installer and build script 25 C# projects building with 0 errors. Native C++ projects require VS 2022 + Windows SDK (x86). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
commit
d1442e3747
1382 changed files with 170725 additions and 0 deletions
160
Managed/Decal.D3DService/D3DServiceImpl.cs
Normal file
160
Managed/Decal.D3DService/D3DServiceImpl.cs
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using Decal.Interop.Core;
|
||||
using Decal.Interop.D3DService;
|
||||
|
||||
namespace Decal.D3DService
|
||||
{
|
||||
[ComVisible(true)]
|
||||
[Guid("F0CC07A0-2C89-4FA4-9356-714665BC2F8B")]
|
||||
[ClassInterface(ClassInterfaceType.None)]
|
||||
[ProgId("D3DService.CService")]
|
||||
public class D3DServiceImpl : ID3DService, IDecalService, IDecalRender
|
||||
{
|
||||
private readonly List<D3DObjImpl> _objects = new List<D3DObjImpl>();
|
||||
|
||||
private CD3DObj CreateObj()
|
||||
{
|
||||
var obj = new D3DObjImpl();
|
||||
_objects.Add(obj);
|
||||
return (CD3DObj)(object)obj;
|
||||
}
|
||||
|
||||
// ID3DService
|
||||
public CD3DObj NewD3DObj() => CreateObj();
|
||||
|
||||
public CD3DObj PointToObject(int guid, int color)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).SetShape(eShape.eVArrow);
|
||||
((ID3DObj)obj).color = color;
|
||||
((ID3DObj)obj).AnchorToObject(guid, 1.0f, 0, 0, 0);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj PointToCoords(float lat, float lng, float alt, int color)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).SetShape(eShape.eVArrow);
|
||||
((ID3DObj)obj).color = color;
|
||||
((ID3DObj)obj).AnchorToCoords(lat, lng, alt);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj MarkObjectWithIcon(int guid, int icon)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).SetIcon(icon);
|
||||
((ID3DObj)obj).AnchorToObject(guid, 1.0f, 0, 0, 0);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj MarkObjectWithIconFromFile(int guid, string filename)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).SetIconFromFile(filename);
|
||||
((ID3DObj)obj).AnchorToObject(guid, 1.0f, 0, 0, 0);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj MarkObjectWithShape(int guid, eShape shape, int color)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).SetShape(shape);
|
||||
((ID3DObj)obj).color = color;
|
||||
((ID3DObj)obj).AnchorToObject(guid, 1.0f, 0, 0, 0);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj MarkObjectWithShapeFromFile(int guid, string filename, int color)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).SetShapeFromFile(filename);
|
||||
((ID3DObj)obj).color = color;
|
||||
((ID3DObj)obj).AnchorToObject(guid, 1.0f, 0, 0, 0);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj MarkCoordsWithIcon(float lat, float lng, float alt, int icon)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).SetIcon(icon);
|
||||
((ID3DObj)obj).AnchorToCoords(lat, lng, alt);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj MarkCoordsWithIconFromFile(float lat, float lng, float alt, string filename)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).SetIconFromFile(filename);
|
||||
((ID3DObj)obj).AnchorToCoords(lat, lng, alt);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj MarkCoordsWithShape(float lat, float lng, float alt, eShape shape, int color)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).SetShape(shape);
|
||||
((ID3DObj)obj).color = color;
|
||||
((ID3DObj)obj).AnchorToCoords(lat, lng, alt);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj MarkCoordsWithShapeFromFile(float lat, float lng, float alt, string filename, int color)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).SetShapeFromFile(filename);
|
||||
((ID3DObj)obj).color = color;
|
||||
((ID3DObj)obj).AnchorToCoords(lat, lng, alt);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public void TraceOneFrame() { }
|
||||
|
||||
public CD3DObj MarkObjectWith2DText(int guid, string szText, string szFont, int options)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).Set2DText(szText, szFont, options);
|
||||
((ID3DObj)obj).AnchorToObject(guid, 1.0f, 0, 0, 0);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj MarkObjectWith3DText(int guid, string szText, string szFont, int options)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).Set3DText(szText, szFont, options);
|
||||
((ID3DObj)obj).AnchorToObject(guid, 1.0f, 0, 0, 0);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj MarkCoordsWith2DText(float lat, float lng, float alt, string szText, string szFont, int options)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).Set2DText(szText, szFont, options);
|
||||
((ID3DObj)obj).AnchorToCoords(lat, lng, alt);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public CD3DObj MarkCoordsWith3DText(float lat, float lng, float alt, string szText, string szFont, int options)
|
||||
{
|
||||
var obj = CreateObj();
|
||||
((ID3DObj)obj).Set3DText(szText, szFont, options);
|
||||
((ID3DObj)obj).AnchorToCoords(lat, lng, alt);
|
||||
return obj;
|
||||
}
|
||||
|
||||
// IDecalService
|
||||
public void Initialize(DecalCore pDecal) { }
|
||||
public void BeforePlugins() { }
|
||||
public void AfterPlugins() { }
|
||||
public void Terminate() { _objects.Clear(); }
|
||||
|
||||
// IDecalRender
|
||||
public void Render2D() { }
|
||||
public void Render3D() { }
|
||||
public void PreReset() { }
|
||||
public void PostReset() { }
|
||||
public void ChangeHWND() { }
|
||||
public void ChangeDirectX() { }
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue