3dObjectList.cpp
上传用户:shxiangxiu
上传日期:2007-01-03
资源大小:1101k
文件大小:3k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // C3dObjectList.cpp : implementation file
  3. //
  4. // glOOP (OpenGL Object Oriented Programming library)
  5. // Copyright (c) Craig Fahrnbach 1997, 1998
  6. //
  7. // OpenGL is a registered trademark of Silicon Graphics
  8. //
  9. //
  10. // This program is provided for educational and personal use only and
  11. // is provided without guarantee or warrantee expressed or implied.
  12. //
  13. // Commercial use is strickly prohibited without written permission
  14. // from ImageWare Development.
  15. //
  16. // This program is -not- in the public domain.
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #include "stdafx.h"
  20. #include "glOOP.h"
  21. #ifdef _DEBUG
  22. #define new DEBUG_NEW
  23. #undef THIS_FILE
  24. static char THIS_FILE[] = __FILE__;
  25. #endif
  26. //////////////////////////////////////////////////////////////////
  27. // CC3dObjectList
  28. //IMPLEMENT_DYNAMIC(C3dObjectList, CObList)
  29. /////////////////////////////////////////////////////////////////////////////
  30. // C3dObjectList construction
  31. C3dObjectList::C3dObjectList()
  32. {
  33. // TODO: add construction code here,
  34. // Place all significant initialization in InitInstance
  35. }
  36. /////////////////////////////////////////////////////////////////////////////
  37. // C3dObjectList Destructor
  38. C3dObjectList::~C3dObjectList()
  39. {
  40. DeleteAll();
  41. }
  42. /////////////////////////////////////////////////////////////////////////////
  43. // C3dObjectList function implimentation
  44. void C3dObjectList::Append(C3dObject* pObject)
  45. {
  46. if (!pObject) return;
  47. CObList::AddTail(pObject);
  48. }
  49. void C3dObjectList::Remove(C3dObject* pObject)
  50. {
  51. if (!pObject) return;
  52. POSITION pos = CObList::Find(pObject);
  53. if (pos) {
  54. RemoveAt(pos);
  55. }
  56. }
  57. void C3dObjectList::Delete(C3dObject* pObject)
  58. {
  59. if (!pObject) return;
  60. Remove(pObject);
  61. delete pObject;
  62. }
  63. void C3dObjectList::DeleteAll()
  64. {
  65. while (!IsEmpty()) {
  66. C3dObject* pObject = (C3dObject*) RemoveHead();
  67. delete pObject;
  68. }
  69. }
  70. #if 0 // not used
  71. // See if the list contains a shape with the same frame and
  72. // visual attachments
  73. C3dObject* C3dObjectList::Find(C3dObject* pObject)
  74. {
  75. if (!pObject) return NULL;
  76. IDirect3DRMFrame* pIFrame = pObject->GetInterface();
  77. IDirect3DRMVisual* pIVisual = pObject->GetVisual();
  78. C3dObject* pListEntry = NULL;
  79. // walk the list
  80. POSITION pos = GetHeadPosition();
  81. while (pos) {
  82. pListEntry = GetNext(pos);
  83. if ((pListEntry->GetInterface() == pIFrame)
  84. && (pListEntry->GetVisual() == pIVisual)) {
  85. return pListEntry;
  86. }
  87. }
  88. return NULL; // end of list
  89. }
  90. #endif