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:
erik 2026-02-08 18:27:56 +01:00
commit d1442e3747
1382 changed files with 170725 additions and 0 deletions

View file

@ -0,0 +1,67 @@
using System.Runtime.InteropServices;
using Decal.Interop.D3DService;
namespace Decal.D3DService
{
[ComVisible(true)]
[Guid("81E79859-2783-4B9A-ADC4-308073F5BB3F")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("D3DService.CD3DObj")]
public class D3DObjImpl : ID3DObj
{
private float _scaleX = 1, _scaleY = 1, _scaleZ = 1;
private bool _autoscale;
private int _color, _color2;
private float _pFade;
private float _pBounce, _hBounce;
private float _pOrbit, _rOrbit;
private float _pSpin;
private bool _visible = true;
private bool _drawBackface;
private float _animationPhaseOffset;
// Appearance
public void SetIcon(int icon) { }
public void SetIconFromResource(int hmodule, int idr) { }
public void SetIconFromFile(string bstrFilename) { }
public void SetShape(eShape shape) { }
public void SetShapeFromResource(int hmodule, int idr) { }
public void SetShapeFromFile(string bstrFilename) { }
public void SetScale(float scale) { _scaleX = _scaleY = _scaleZ = scale; }
public void Set2DText(string szText, string szFont, int options) { }
public void Set3DText(string szText, string szFont, int options) { }
// Scale
public float scaleX { get => _scaleX; set => _scaleX = value; }
public float scaleY { get => _scaleY; set => _scaleY = value; }
public float scaleZ { get => _scaleZ; set => _scaleZ = value; }
public bool autoscale { get => _autoscale; set => _autoscale = value; }
// Color
public int color { get => _color; set => _color = value; }
public int color2 { get => _color2; set => _color2 = value; }
// Effects
public float pFade { get => _pFade; set => _pFade = value; }
public float pBounce { get => _pBounce; set => _pBounce = value; }
public float hBounce { get => _hBounce; set => _hBounce = value; }
public float pOrbit { get => _pOrbit; set => _pOrbit = value; }
public float rOrbit { get => _rOrbit; set => _rOrbit = value; }
public float pSpin { get => _pSpin; set => _pSpin = value; }
public float AnimationPhaseOffset { get => _animationPhaseOffset; set => _animationPhaseOffset = value; }
// Anchoring
public void AnchorToObject(int guid, float fractHeight, float dx, float dy, float dz) { }
public void AnchorToCoords(float lat, float lng, float alt) { }
// Orientation
public void OrientToCamera(bool fTilt) { }
public void OrientToPlayer(bool fTilt) { }
public void OrientToObject(int guid, float fractHeight, bool fTilt) { }
public void OrientToCoords(float lat, float lng, float alt, bool fTilt) { }
// Visibility
public bool visible { get => _visible; set => _visible = value; }
public bool drawBackface { get => _drawBackface; set => _drawBackface = value; }
}
}