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,36 @@
// Location.cpp : Implementation of cLocation
#include "stdafx.h"
#include "DecalFilters.h"
#include "Location.h"
/////////////////////////////////////////////////////////////////////////////
// cLocation
STDMETHODIMP cLocation::get_Landblock(long *pVal)
{
if (pVal == NULL) {
_ASSERT(FALSE);
return E_POINTER;
}
*pVal = m_dwLandblock;
return S_OK;
}
STDMETHODIMP cLocation::Offset(float *x, float *y, float *z)
{
*x = m_fxOffset;
*y = m_fyOffset;
*z = m_fzOffset;
return S_OK;
}
STDMETHODIMP cLocation::Heading(float *x, float *y, float *z, float *w)
{
*x = m_fxHeading;
*y = m_fyHeading;
*z = m_fzHeading;
*w = m_fwHeading;
return S_OK;
}

View file

@ -0,0 +1,56 @@
// Location.h : Declaration of the cLocation
#ifndef __LOCATION_H_
#define __LOCATION_H_
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// cLocation
class ATL_NO_VTABLE cLocation :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<cLocation, &CLSID_Location>,
public IDispatchImpl<ILocation, &IID_ILocation, &LIBID_DecalFilters>
{
public:
cLocation()
{
m_dwLandblock = 0;
m_fxOffset = 0.0f;
m_fyOffset = 0.0f;
m_fzOffset = 0.0f;
m_fxHeading = 0.0f;
m_fyHeading = 0.0f;
m_fzHeading = 0.0f;
m_fwHeading = 0.0f;
}
DECLARE_REGISTRY_RESOURCEID(IDR_LOCATION)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(cLocation)
COM_INTERFACE_ENTRY(ILocation)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
// ILocation
public:
STDMETHOD(Heading)(float *x, float *y, float *z, float *w);
STDMETHOD(Offset)(float *x, float *y, float *z);
STDMETHOD(get_Landblock)(/*[out, retval]*/ long *pVal);
long m_dwLandblock;
float m_fxOffset;
float m_fyOffset;
float m_fzOffset;
float m_fxHeading;
float m_fyHeading;
float m_fzHeading;
float m_fwHeading;
};
#endif //__LOCATION_H_

View file

@ -0,0 +1,26 @@
HKCR
{
DecalFilters.Location.1 = s 'Location Class'
{
CLSID = s '{4031CDC0-FC4F-428F-B98A-ACAFA6CF19FB}'
}
DecalFilters.Location = s 'Location Class'
{
CLSID = s '{4031CDC0-FC4F-428F-B98A-ACAFA6CF19FB}'
CurVer = s 'DecalFilters.Location.1'
}
NoRemove CLSID
{
ForceRemove {4031CDC0-FC4F-428F-B98A-ACAFA6CF19FB} = s 'Location Class'
{
ProgID = s 'DecalFilters.Location.1'
VersionIndependentProgID = s 'DecalFilters.Location'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
'TypeLib' = s '{DA16DAA9-7F16-45D9-A59F-8C45A7F2ACB1}'
}
}
}

View file

@ -0,0 +1,8 @@
// Stackable.cpp : Implementation of cStackable
#include "stdafx.h"
#include "DecalFilters.h"
#include "Stackable.h"
/////////////////////////////////////////////////////////////////////////////
// cStackable

View file

@ -0,0 +1,33 @@
// Stackable.h : Declaration of the cStackable
#ifndef __STACKABLE_H_
#define __STACKABLE_H_
#include "resource.h" // main symbols
/////////////////////////////////////////////////////////////////////////////
// cStackable
class ATL_NO_VTABLE cStackable :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<cStackable, &CLSID_Stackable>,
public IDispatchImpl<IStackable, &IID_IStackable, &LIBID_DecalFilters>
{
public:
cStackable()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_STACKABLE)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(cStackable)
COM_INTERFACE_ENTRY(IStackable)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
// IStackable
public:
};
#endif //__STACKABLE_H_

View file

@ -0,0 +1,26 @@
HKCR
{
DecalFilters.Stackable.1 = s 'Stackable Class'
{
CLSID = s '{414EF2D6-E74F-4998-A2C7-26517162744E}'
}
DecalFilters.Stackable = s 'Stackable Class'
{
CLSID = s '{414EF2D6-E74F-4998-A2C7-26517162744E}'
CurVer = s 'DecalFilters.Stackable.1'
}
NoRemove CLSID
{
ForceRemove {414EF2D6-E74F-4998-A2C7-26517162744E} = s 'Stackable Class'
{
ProgID = s 'DecalFilters.Stackable.1'
VersionIndependentProgID = s 'DecalFilters.Stackable'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
'TypeLib' = s '{DA16DAA9-7F16-45D9-A59F-8C45A7F2ACB1}'
}
}
}