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

OpenGL

开发平台:

Visual C++

  1. /////////////////////////////////////////////////////////////////////////////
  2. // AnimAVI.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. #include "AnimationDialog.h"
  22. #ifdef _DEBUG
  23. #define new DEBUG_NEW
  24. #undef THIS_FILE
  25. static char THIS_FILE[] = __FILE__;
  26. #endif
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CAnimAVI
  29. IMPLEMENT_DYNAMIC(CAnimAVI, CAnimation)
  30. /////////////////////////////////////////////////////////////////////////////
  31. // CAnimAVI construction
  32. CAnimAVI::CAnimAVI()
  33. {
  34. // Reset our pointers
  35. m_pAviMovie = NULL;
  36. // Set the attributes to default values..
  37. m_szName = SZ_ANIMATE_AVI;
  38. m_bFirst = TRUE;
  39. }
  40. /////////////////////////////////////////////////////////////////////////////
  41. // CAnimAVI Destructor
  42. CAnimAVI::~CAnimAVI()
  43. {
  44. }
  45. /////////////////////////////////////////////////////////////////////////////
  46. // CAnimAVI Methods or virtual function implimentation
  47. void CAnimAVI::AddAnimationPage(LPVOID pSht, C3dObject* pObject, C3dCamera* pCamera, C3dWorld* pWorld)
  48. {
  49. CAnimPropSheet* pSheet = (CAnimPropSheet*)pSht;
  50. ASSERT(pSheet);
  51. // Add the page to the property sheet
  52. pSheet->AddPage(&pSheet->m_TextureMapPage);
  53. // Save the address of this animation procedure in the page
  54. pSheet->m_TextureMapPage.m_pAnimation = this;
  55. }
  56. void CAnimAVI::AnimateObject(C3dObject* pObject, double dTime)
  57. {
  58. // Ensure that we have a vaild pointer..
  59. if(!pObject)
  60. return;
  61. // First pass through, just save the objects original
  62. // parameters
  63. if(m_bFirst)
  64. {
  65. m_bFirst = FALSE;
  66. SaveObjectAttributes(pObject);
  67. return;
  68. }
  69. // Play the AVI movie
  70. m_pAviMovie->Play(dTime);
  71. // Save the time of the last iteration
  72. m_dTimePrevious = dTime;
  73. }
  74. void CAnimAVI::AnimateWorld(C3dWorld* pWorld, double dTime)
  75. {
  76. // Ensure that we have a vaild pointer..
  77. if(!pWorld)
  78. return;
  79. // First pass through, just save the objects original
  80. // parameters
  81. if(m_bFirst)
  82. {
  83. m_bFirst = FALSE;
  84. return;
  85. }
  86. // Play the AVI movie
  87. m_pAviMovie->Play(dTime);
  88. // Save the time of the last iteration
  89. m_dTimePrevious = dTime;
  90. }
  91. void CAnimAVI::Serialize(CArchive& ar, int iVersion)
  92. {
  93. CString szBuffer;
  94. CString szName;
  95. szBuffer.GetBuffer(256);
  96. szName.GetBuffer(128);
  97. if (ar.IsStoring())
  98. {
  99. // Save the CAnimation derived class header...
  100. szBuffer.Format("%sCAnimAVI {n", szIndent);
  101. ar.WriteString(szBuffer);
  102. // Save the this animation procedures' specific data...
  103. // szBuffer.Format("%stSpinX         < %f >n", szIndent, m_fSpinX);
  104. // ar.WriteString(szBuffer);
  105. // Save the base class data...
  106. CAnimation::Serialize(ar, iVersion);
  107. szBuffer.Format("%s}n", szIndent); // end of animation def
  108. ar.WriteString(szBuffer);
  109. }
  110. else
  111. {
  112. // Read the derived class data..
  113. ar.ReadString(szBuffer); // Read the class header
  114. // ar.ReadString(szBuffer);
  115. // szBuffer.TrimLeft(); // Remove leading white spaces
  116. // sscanf(szBuffer, "SpinX         < %f >n", &m_fSpinX);
  117. // Read the base class data...
  118. CAnimation::Serialize(ar, iVersion);
  119. }
  120. }
  121. void CAnimAVI::Reset()
  122. {
  123. // Stop our movie..
  124. if(m_pAviMovie)
  125. m_pAviMovie->Stop();
  126. }
  127. /////////////////////////////////////////////////////////////////////////////
  128. // CAnimAVI function implimentation