/* ** Command & Conquer Generals Zero Hour(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 . */ //////////////////////////////////////////////////////////////////////////////// // // // (c) 2001-2003 Electronic Arts Inc. // // // //////////////////////////////////////////////////////////////////////////////// // FILE: W3DPropDraw.cpp //////////////////////////////////////////////////////////////////////// // Author: John Ahlquist, June 2--3 // Desc: Simple prop drawing code. /////////////////////////////////////////////////////////////////////////////////////////////////// // INCLUDES /////////////////////////////////////////////////////////////////////////////////////// #include #include "Common/Thing.h" #include "Common/ThingTemplate.h" #include "Common/Xfer.h" #include "GameLogic/Object.h" #include "GameClient/Drawable.h" #include "W3DDevice/GameClient/Module/W3DPropDraw.h" #include "W3DDevice/GameClient/BaseHeightMap.h" #ifdef _INTERNAL // for occasional debugging... //#pragma optimize("", off) //#pragma MESSAGE("************************************** WARNING, optimization disabled for debugging purposes") #endif //------------------------------------------------------------------------------------------------- W3DPropDrawModuleData::W3DPropDrawModuleData() { } //------------------------------------------------------------------------------------------------- W3DPropDrawModuleData::~W3DPropDrawModuleData() { } //------------------------------------------------------------------------------------------------- void W3DPropDrawModuleData::buildFieldParse(MultiIniFieldParse& p) { ModuleData::buildFieldParse(p); static const FieldParse dataFieldParse[] = { { "ModelName", INI::parseAsciiString, NULL, offsetof(W3DPropDrawModuleData, m_modelName) }, { 0, 0, 0, 0 } }; p.add(dataFieldParse); } /////////////////////////////////////////////////////////////////////////////////////////////////// // PUBLIC FUNCTIONS /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- W3DPropDraw::W3DPropDraw( Thing *thing, const ModuleData* moduleData ) : DrawModule( thing, moduleData ), m_propAdded(false) { } // end W3DPropDraw //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- W3DPropDraw::~W3DPropDraw( void ) { } //------------------------------------------------------------------------------------------------- void W3DPropDraw::reactToTransformChange( const Matrix3D *oldMtx, const Coord3D *oldPos, Real oldAngle ) { Drawable *draw = getDrawable(); if (m_propAdded) { return; } if (draw->getPosition()->x==0.0f && draw->getPosition()->y == 0.0f) { return; } m_propAdded = true; const W3DPropDrawModuleData *moduleData = getW3DPropDrawModuleData(); if (!moduleData) { return; } Real scale = draw->getScale(); TheTerrainRenderObject->addProp((Int)draw->getID(), *draw->getPosition(), draw->getOrientation(), scale, moduleData->m_modelName); } //------------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------------------------- void W3DPropDraw::doDrawModule(const Matrix3D* transformMtx) { return; } // ------------------------------------------------------------------------------------------------ /** CRC */ // ------------------------------------------------------------------------------------------------ void W3DPropDraw::crc( Xfer *xfer ) { // extend base class DrawModule::crc( xfer ); } // end crc // ------------------------------------------------------------------------------------------------ /** Xfer method * Version Info: * 1: Initial version */ // ------------------------------------------------------------------------------------------------ void W3DPropDraw::xfer( Xfer *xfer ) { // version XferVersion currentVersion = 1; XferVersion version = currentVersion; xfer->xferVersion( &version, currentVersion ); // extend base class DrawModule::xfer( xfer ); // no data to save here, nobody will ever notice } // end xfer // ------------------------------------------------------------------------------------------------ /** Load post process */ // ------------------------------------------------------------------------------------------------ void W3DPropDraw::loadPostProcess( void ) { // extend base class DrawModule::loadPostProcess(); } // end loadPostProcess