Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
4854e9d
refactor(w3dview): migrate AssetInfo, ScreenCursor, PlaySoundDialog t…
bobtista Nov 6, 2025
053dc77
refactor(w3dview): migrate property sheets to RefCountPtr<T>
bobtista Nov 6, 2025
21dd2af
refactor(w3dview): migrate W3DViewDoc and GraphicView to RefCountPtr<T>
bobtista Nov 6, 2025
5786093
refactor(w3dview): remove unused MEMBER_ADD/MEMBER_RELEASE macros
bobtista Nov 6, 2025
4ccbbe0
fix(w3dview): add missing NULL assignments for m_pCursor and m_pCurso…
bobtista Nov 2, 2025
4c62a41
nit: revert indentation change
bobtista Nov 2, 2025
9f39142
refactor(w3dview): use RefCountPtr::Clear() and remove redundant null…
bobtista Nov 6, 2025
b45f0d8
fix(w3dview): move RefCountPtr::Clear() calls into proper scope
bobtista Nov 6, 2025
b8cd06e
fix(w3dview): use .Peek() in ASSERT macros for explicit pointer checking
bobtista Nov 6, 2025
415a39b
remove duplicate cleanup of m_pCBackObjectScene
bobtista Nov 22, 2025
d4a4b7e
fix(w3dview): add missing cleanup for local render object
bobtista Nov 22, 2025
7bd7dc3
fix(w3dview): add missing RefCountPtr cleanups and fix indentation
bobtista Nov 22, 2025
172d018
remove extra include, fix indentation
bobtista Nov 22, 2025
7802144
formatting change
bobtista Nov 22, 2025
c4835f6
remove extra clear call
bobtista Nov 22, 2025
d3f23d2
formatting if block
bobtista Nov 22, 2025
9423707
style(w3dview): split single-line if statements to multi-line format
bobtista Dec 3, 2025
a7f4460
nit: indentation fixes
bobtista Dec 3, 2025
e49a9e8
fix: indentation using tabs instead of spaces, updated two NULL check…
bobtista Dec 15, 2025
a3409ec
Add missing m_pCursor.Clear() in CleanupResources to prevent leak
bobtista Feb 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Core/Tools/W3DView/AssetInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,10 @@ AssetInfoClass::Initialize (void)
if (m_AssetType != TypeMaterial) {

// Assume we are wrapping an instance as apposed to an asset 'name'.
RenderObjClass *prender_obj = m_pRenderObj;
if (prender_obj)
RenderObjClass *prender_obj = m_pRenderObj.Peek();
if (prender_obj) {
prender_obj->Add_Ref();
}

// If we are wrapping an asset name, then create an instance of it.
if (prender_obj == nullptr) {
Expand Down
17 changes: 8 additions & 9 deletions Core/Tools/W3DView/AssetInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
#pragma once

#include "rendobj.h"
#include "Utils.h"
#include "ref_ptr.h"
#include "AssetTypes.h"


Expand All @@ -58,16 +58,15 @@ class AssetInfoClass
//
AssetInfoClass (void)
: m_AssetType (TypeUnknown),
m_dwUserData (0L),
m_pRenderObj (nullptr) { Initialize (); }
m_dwUserData (0L) { Initialize (); }

AssetInfoClass (LPCTSTR passet_name, ASSET_TYPE type, RenderObjClass *prender_obj = nullptr, DWORD user_data = 0L)
: m_Name (passet_name),
m_AssetType (type),
m_dwUserData (user_data),
m_pRenderObj (nullptr) { REF_PTR_SET (m_pRenderObj, prender_obj); Initialize (); }
m_pRenderObj (RefCountPtr<RenderObjClass>::Create_AddRef(prender_obj)) { Initialize (); }

virtual ~AssetInfoClass (void) { REF_PTR_RELEASE (m_pRenderObj); }
virtual ~AssetInfoClass (void) {}

//////////////////////////////////////////////////////////////
//
Expand All @@ -83,14 +82,14 @@ class AssetInfoClass
ASSET_TYPE Get_Type (void) const { return m_AssetType; }
DWORD Get_User_Number (void) const { return m_dwUserData; }
const CString & Get_User_String (void) const { return m_UserString; }
RenderObjClass * Get_Render_Obj (void) const { if (m_pRenderObj) m_pRenderObj->Add_Ref(); return m_pRenderObj; }
RenderObjClass * Peek_Render_Obj (void) const { return m_pRenderObj; }
RenderObjClass * Get_Render_Obj (void) const { RenderObjClass *ptr = m_pRenderObj.Peek(); if (ptr) ptr->Add_Ref(); return ptr; }
RenderObjClass * Peek_Render_Obj (void) const { return m_pRenderObj.Peek(); }
void Set_Name (LPCTSTR pname) { m_Name = pname; }
void Set_Hierarchy_Name (LPCTSTR pname) { m_HierarchyName = pname; }
void Set_Type (ASSET_TYPE type) { m_AssetType = type; }
void Set_User_Number (DWORD user_data) { m_dwUserData = user_data; }
void Set_User_String (LPCTSTR string) { m_UserString = string; }
void Set_Render_Obj (RenderObjClass *pobj) { REF_PTR_SET (m_pRenderObj, pobj); }
void Set_Render_Obj (RenderObjClass *pobj) { m_pRenderObj = RefCountPtr<RenderObjClass>::Create_AddRef(pobj); }

//
// Information methods
Expand Down Expand Up @@ -118,5 +117,5 @@ class AssetInfoClass
CString m_OriginalName;
ASSET_TYPE m_AssetType;
DWORD m_dwUserData;
RenderObjClass * m_pRenderObj;
RefCountPtr<RenderObjClass> m_pRenderObj;
};
3 changes: 2 additions & 1 deletion Core/Tools/W3DView/EmitterInstanceList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,9 @@ EmitterInstanceListClass::Add_Emitter (ParticleEmitterClass *emitter)
//
// Add this emitter to the list and put a hold on its reference
//
if (emitter)
if (emitter) {
emitter->Add_Ref();
}
m_List.Add (emitter);
}

Expand Down
16 changes: 6 additions & 10 deletions Core/Tools/W3DView/GraphicView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ IMPLEMENT_DYNCREATE(CGraphicView, CView)
////////////////////////////////////////////////////////////////////////////
CGraphicView::CGraphicView (void)
: m_bInitialized (FALSE),
m_pCamera (nullptr),
m_TimerID (0),
m_bMouseDown (FALSE),
m_bRMouseDown (FALSE),
Expand All @@ -83,7 +82,6 @@ CGraphicView::CGraphicView (void)
m_objectRotation (NoRotation),
m_LightRotation (NoRotation),
m_bLightMeshInScene (false),
m_pLightMesh (nullptr),
m_ParticleCountUpdate (0),
m_CameraBonePosX (false),
m_UpdateCounter (0),
Expand Down Expand Up @@ -216,7 +214,7 @@ CGraphicView::InitializeGraphicView (void)
if (bReturn && (m_pCamera == nullptr))
{
// Instantiate a new camera class
m_pCamera = new CameraClass ();
m_pCamera = RefCountPtr<CameraClass>::Create_NoAddRef(new CameraClass ());
bReturn = (m_pCamera != nullptr);

// Were we successful in creating a camera?
Expand All @@ -234,7 +232,7 @@ CGraphicView::InitializeGraphicView (void)
//
// Attach the 'listener' to the camera
//
WWAudioClass::Get_Instance ()->Get_Sound_Scene ()->Attach_Listener_To_Obj (m_pCamera);
WWAudioClass::Get_Instance ()->Get_Sound_Scene ()->Attach_Listener_To_Obj (m_pCamera.Peek());
}

Reset_FOV ();
Expand All @@ -244,7 +242,7 @@ CGraphicView::InitializeGraphicView (void)
ResourceFileClass light_mesh_file (nullptr, "Light.w3d");
WW3DAssetManager::Get_Instance()->Load_3D_Assets (light_mesh_file);

m_pLightMesh = WW3DAssetManager::Get_Instance()->Create_Render_Obj ("LIGHT");
m_pLightMesh = RefCountPtr<RenderObjClass>::Create_NoAddRef(WW3DAssetManager::Get_Instance()->Create_Render_Obj ("LIGHT"));
ASSERT (m_pLightMesh != nullptr);
m_bLightMeshInScene = false;
}
Expand Down Expand Up @@ -329,8 +327,6 @@ CGraphicView::OnDestroy (void)
//
// Free the camera object
//
REF_PTR_RELEASE (m_pCamera);
REF_PTR_RELEASE (m_pLightMesh);

// Is there an update thread running?
if (m_TimerID == 0) {
Expand Down Expand Up @@ -533,7 +529,7 @@ CGraphicView::RepaintView
// Wait for all previous rendering to complete before starting benchmark.
DWORD profile_time = ::Get_CPU_Clock (pt_high);

WW3D::Render (doc->GetScene (), m_pCamera, FALSE, FALSE);
WW3D::Render (doc->GetScene (), m_pCamera.Peek(), FALSE, FALSE);

// Wait for all rendering to complete before stopping benchmark.
DWORD milliseconds = (::Get_CPU_Clock (pt_high) - profile_time) / 1000;
Expand All @@ -544,7 +540,7 @@ CGraphicView::RepaintView
WW3D::Render (doc->GetCursorScene (), doc->Get2DCamera (), FALSE, FALSE);

// Render the dazzles
doc->Render_Dazzles(m_pCamera);
doc->Render_Dazzles(m_pCamera.Peek());

// Finish out the rendering process
WW3D::End_Render ();
Expand Down Expand Up @@ -603,7 +599,7 @@ CGraphicView::UpdateDisplay (void)

// Render the current view inside the frame
WW3D::Begin_Render (TRUE, TRUE, Vector3 (0.2,0.4,0.6));
WW3D::Render (doc->GetScene (), m_pCamera, FALSE, FALSE);
WW3D::Render (doc->GetScene (), m_pCamera.Peek(), FALSE, FALSE);
WW3D::End_Render ();
} */

Expand Down
9 changes: 5 additions & 4 deletions Core/Tools/W3DView/GraphicView.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class ParticleEmitterClass;
// CGraphicView view

#include "camera.h"
#include "ref_ptr.h"

class CGraphicView : public CView
{
Expand Down Expand Up @@ -170,7 +171,7 @@ class CGraphicView : public CView
void SetAllowedCameraRotation (CAMERA_ROTATION cameraRotation);
CAMERA_ROTATION GetAllowedCameraRotation () const { return m_allowedCameraRotation; }
void SetCameraPos (CAMERA_POS cameraPos);
class CameraClass *GetCamera (void) const { return m_pCamera; }
class CameraClass *GetCamera (void) const { return m_pCamera.Peek(); }

float Get_Camera_Distance (void) const { return m_CameraDistance; }
void Set_Camera_Distance (float dist);
Expand Down Expand Up @@ -200,7 +201,7 @@ class CGraphicView : public CView
//
// Misc
//
RenderObjClass * Get_Light_Mesh (void) const { return m_pLightMesh; }
RenderObjClass * Get_Light_Mesh (void) const { return m_pLightMesh.Peek(); }
Vector3 & Get_Object_Center (void) { return m_ObjectCenter; }

//
Expand All @@ -227,8 +228,8 @@ class CGraphicView : public CView
BOOL m_bInitialized;
BOOL m_bActive;
UINT m_TimerID;
CameraClass * m_pCamera;
RenderObjClass * m_pLightMesh;
RefCountPtr<CameraClass> m_pCamera;
RefCountPtr<RenderObjClass> m_pLightMesh;
bool m_bLightMeshInScene;
Vector3 m_ObjectCenter;
SphereClass m_ViewedSphere;
Expand Down
5 changes: 2 additions & 3 deletions Core/Tools/W3DView/PlaySoundDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ static char THIS_FILE[] = __FILE__;
/////////////////////////////////////////////////////////////////////////////
PlaySoundDialogClass::PlaySoundDialogClass(LPCTSTR filename, CWnd* pParent /*=nullptr*/)
: Filename (filename),
SoundObj (nullptr),
CDialog(PlaySoundDialogClass::IDD, pParent)
{
//{{AFX_DATA_INIT(PlaySoundDialogClass)
Expand Down Expand Up @@ -100,7 +99,7 @@ void
PlaySoundDialogClass::OnCancel (void)
{
SoundObj->Stop ();
REF_PTR_RELEASE (SoundObj);
SoundObj.Clear();

CDialog::OnCancel ();
return ;
Expand All @@ -125,7 +124,7 @@ PlaySoundDialogClass::OnInitDialog (void)
//
// Create the sound effect so we can play it
//
SoundObj = WWAudioClass::Get_Instance ()->Create_Sound_Effect (Filename);
SoundObj = RefCountPtr<AudibleSoundClass>::Create_NoAddRef(WWAudioClass::Get_Instance ()->Create_Sound_Effect (Filename));
if (SoundObj == nullptr) {
CString message;
message.Format ("Cannot find sound file: %s!", (LPCTSTR)Filename, MB_OK);
Expand Down
3 changes: 2 additions & 1 deletion Core/Tools/W3DView/PlaySoundDialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

#include "resource.h"
#include "WWAudio.h"
#include "ref_ptr.h"


/////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -61,7 +62,7 @@ class PlaySoundDialogClass : public CDialog

private:
CString Filename;
AudibleSoundClass * SoundObj;
RefCountPtr<AudibleSoundClass> SoundObj;
};

//{{AFX_INSERT_LOCATION}}
Expand Down
31 changes: 14 additions & 17 deletions Core/Tools/W3DView/RingPropertySheet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,9 @@ RingPropertySheetClass::RingPropertySheetClass
CWnd * pParentWnd,
UINT iSelectPage
)
: m_RenderObj (nullptr),
CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
: CPropertySheet(nIDCaption, pParentWnd, iSelectPage),
m_RenderObj (RefCountPtr<RingRenderObjClass>::Create_AddRef(ring))
{
REF_PTR_SET (m_RenderObj, ring);
Initialize ();
return ;
}
Expand All @@ -69,10 +68,9 @@ RingPropertySheetClass::RingPropertySheetClass
CWnd * pParentWnd,
UINT iSelectPage
)
: m_RenderObj (nullptr),
CPropertySheet(pszCaption, pParentWnd, iSelectPage)
: CPropertySheet(pszCaption, pParentWnd, iSelectPage),
m_RenderObj (RefCountPtr<RingRenderObjClass>::Create_AddRef(ring))
{
REF_PTR_SET (m_RenderObj, ring);
Initialize ();
return ;
}
Expand All @@ -85,7 +83,6 @@ RingPropertySheetClass::RingPropertySheetClass
/////////////////////////////////////////////////////////////////////////////
RingPropertySheetClass::~RingPropertySheetClass (void)
{
REF_PTR_RELEASE (m_RenderObj);
return ;
}

Expand Down Expand Up @@ -183,7 +180,7 @@ RingPropertySheetClass::Add_Object_To_Viewer (void)
//
// Create a new prototype for this object
//
RingPrototypeClass *prototype = new RingPrototypeClass (m_RenderObj);
RingPrototypeClass *prototype = new RingPrototypeClass (m_RenderObj.Peek());

//
// Update the asset manager with the new prototype
Expand All @@ -204,14 +201,14 @@ RingPropertySheetClass::Add_Object_To_Viewer (void)
//
doc->Reload_Displayed_Object ();
m_LastSavedName = m_RenderObj->Get_Name ();
REF_PTR_SET (m_RenderObj, (RingRenderObjClass *)doc->GetDisplayedObject ());
m_RenderObj = RefCountPtr<RingRenderObjClass>::Create_AddRef((RingRenderObjClass *)doc->GetDisplayedObject ());

//
// Pass the object along to the pages
//
m_GeneralPage.Set_Ring (m_RenderObj);
m_ColorPage.Set_Ring (m_RenderObj);
m_ScalePage.Set_Ring (m_RenderObj);
m_GeneralPage.Set_Ring (m_RenderObj.Peek());
m_ColorPage.Set_Ring (m_RenderObj.Peek());
m_ScalePage.Set_Ring (m_RenderObj.Peek());
}

return ;
Expand Down Expand Up @@ -248,9 +245,9 @@ RingPropertySheetClass::Initialize (void)
//
// Pass the object along to the pages
//
m_GeneralPage.Set_Ring (m_RenderObj);
m_ColorPage.Set_Ring (m_RenderObj);
m_ScalePage.Set_Ring (m_RenderObj);
m_GeneralPage.Set_Ring (m_RenderObj.Peek());
m_ColorPage.Set_Ring (m_RenderObj.Peek());
m_ScalePage.Set_Ring (m_RenderObj.Peek());

//
// Add the pages to the sheet
Expand All @@ -277,13 +274,13 @@ RingPropertySheetClass::Initialize (void)
void
RingPropertySheetClass::Create_New_Object (void)
{
m_RenderObj = new RingRenderObjClass;
m_RenderObj = RefCountPtr<RingRenderObjClass>::Create_NoAddRef(new RingRenderObjClass);
m_RenderObj->Set_Name ("Ring");

//
// Display the new object
//
::GetCurrentDocument ()->DisplayObject (m_RenderObj);
::GetCurrentDocument ()->DisplayObject (m_RenderObj.Peek());
return ;
}

3 changes: 2 additions & 1 deletion Core/Tools/W3DView/RingPropertySheet.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
#include "RingColorPropPage.h"
#include "RingGeneralPropPage.h"
#include "RingSizePropPage.h"
#include "ref_ptr.h"


// Forward declarations
Expand Down Expand Up @@ -109,7 +110,7 @@ class RingPropertySheetClass : public CPropertySheet
RingGeneralPropPageClass m_GeneralPage;
RingColorPropPageClass m_ColorPage;
RingSizePropPageClass m_ScalePage;
RingRenderObjClass * m_RenderObj;
RefCountPtr<RingRenderObjClass> m_RenderObj;
CString m_LastSavedName;
};

Expand Down
Loading
Loading