Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
cc4d299
refactor(w3dview): migrate AssetInfo, ScreenCursor, PlaySoundDialog t…
bobtista Nov 6, 2025
6cdc7fd
refactor(w3dview): migrate property sheets to RefCountPtr<T>
bobtista Nov 6, 2025
c9a3ff7
refactor(w3dview): migrate W3DViewDoc and GraphicView to RefCountPtr<T>
bobtista Nov 6, 2025
c64afce
refactor(w3dview): remove unused MEMBER_ADD/MEMBER_RELEASE macros
bobtista Nov 6, 2025
5ed03af
fix(w3dview): add missing NULL assignments for m_pCursor and m_pCurso…
bobtista Nov 2, 2025
4d691e7
nit: revert indentation change
bobtista Nov 2, 2025
ab0c388
refactor(w3dview): use RefCountPtr::Clear() and remove redundant null…
bobtista Nov 6, 2025
4937dd9
fix(w3dview): move RefCountPtr::Clear() calls into proper scope
bobtista Nov 6, 2025
07ee845
fix(w3dview): use .Peek() in ASSERT macros for explicit pointer checking
bobtista Nov 6, 2025
a2e5ecd
remove duplicate cleanup of m_pCBackObjectScene
bobtista Nov 22, 2025
c59fcf8
fix(w3dview): add missing cleanup for local render object
bobtista Nov 22, 2025
2bbc396
fix(w3dview): add missing RefCountPtr cleanups and fix indentation
bobtista Nov 22, 2025
c91b881
remove extra include, fix indentation
bobtista Nov 22, 2025
8d46655
formatting change
bobtista Nov 22, 2025
8a7b329
remove extra clear call
bobtista Nov 22, 2025
4dba9bc
formatting if block
bobtista Nov 22, 2025
412b990
style(w3dview): split single-line if statements to multi-line format
bobtista Dec 3, 2025
9a7e54c
nit: indentation fixes
bobtista Dec 3, 2025
9bdab84
fix: indentation using tabs instead of spaces, updated two NULL check…
bobtista Dec 15, 2025
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