/* ** Command & Conquer Generals(tm) ** Copyright 2025 Electronic Arts Inc. ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . */ /* $Header: /Commando/Code/Tools/max2w3d/MeshDeformSaveSet.cpp 2 6/16/99 6:56p Patrick $ */ /*********************************************************************************************** *** Confidential - Westwood Studios *** *********************************************************************************************** * * * Project Name : Commando / G 3D engine * * * * File Name : MeshDeformSaveSet.CPP * * * Programmer : Patrick Smith * * * * Start Date : 05/28/99 * * * * Last Update : * * *---------------------------------------------------------------------------------------------* * Functions: * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ #include "MeshDeformSaveSet.H" #include "Util.H" //////////////////////////////////////////////////////////////////////// // // Reset // //////////////////////////////////////////////////////////////////////// void MeshDeformSaveSetClass::Reset (void) { // // Free all the keyframe pointers in our list // for (int index = 0; index < m_DeformData.Count (); index ++) { SAFE_DELETE (m_DeformData[index]); } m_DeformData.Delete_All (); m_CurrentKeyFrame = NULL; return ; } //////////////////////////////////////////////////////////////////////// // // Begin_Keyframe // //////////////////////////////////////////////////////////////////////// void MeshDeformSaveSetClass::Begin_Keyframe (float state) { // // Allocate a new keyframe structure // m_CurrentKeyFrame = new KEYFRAME; m_CurrentKeyFrame->state = state; // // Add this new keyframe to the end of our list // m_DeformData.Add (m_CurrentKeyFrame); return ; } //////////////////////////////////////////////////////////////////////// // // End_Keyframe // //////////////////////////////////////////////////////////////////////// void MeshDeformSaveSetClass::End_Keyframe (void) { m_CurrentKeyFrame = NULL; return ; } //////////////////////////////////////////////////////////////////////// // // Add_Vert // //////////////////////////////////////////////////////////////////////// void MeshDeformSaveSetClass::Add_Vert ( UINT vert_index, const Point3 & position, const VertColor & color ) { // State OK? assert (m_CurrentKeyFrame != NULL); if (m_CurrentKeyFrame != NULL) { // // Create a structure that will hold the // vertex information. // DEFORM_DATA data; data.vert_index = vert_index; data.position = position; data.color = color; // // Add this vertex information to the keyframe list // m_CurrentKeyFrame->deform_list.Add (data); } return ; } //////////////////////////////////////////////////////////////////////// // // Replace_Deform_Data // //////////////////////////////////////////////////////////////////////// void MeshDeformSaveSetClass::Replace_Deform_Data ( int keyframe_index, DynamicVectorClass &list ) { KEYFRAME *key_frame = m_DeformData[keyframe_index]; if (key_frame != NULL) { // // Replace the vertex deformation list for the keyframe // key_frame->deform_list.Delete_All (); key_frame->deform_list = list; } return ; } //////////////////////////////////////////////////////////////////////// // // Get_Deform_Count // //////////////////////////////////////////////////////////////////////// /*int MeshDeformSaveSetClass::Get_Deform_Count (void) const { // // Count up all the deform entries for all the keyframes // int count = 0; for (int index = 0; index < m_DeformData.Count (); index ++) { KEYFRAME *key_frame = m_DeformData[index]; if (key_frame != NULL) { count += key_frame->deform_list.Count (); } } return count; }*/