/* ** Copyright (C) 1996, 1997 Microsoft Corporation. All Rights Reserved. ** ** File: projectileIGC.h ** ** Author: ** ** Description: ** Header for the CprojectileIGC class. This file was initially created by ** the ATL wizard. ** ** History: */ // projectileIGC.h : Declaration of the CprojectileIGC #ifndef __PROJECTILEIGC_H_ #define __PROJECTILEIGC_H_ #include "modelIGC.h" class CprojectileIGC : public TmodelIGC { public: CprojectileIGC(void); ~CprojectileIGC(void); public: // IbaseIGC virtual HRESULT Initialize(ImissionIGC* pMission, Time now, const void* data, int dataSize); virtual void Terminate(void); virtual void Update(Time now); virtual int Export(void* data); virtual ObjectType GetObjectType(void) const { return OT_projectile; } // ImodelIGC virtual void SetCluster(IclusterIGC* cluster) { AddRef(); { IclusterIGC* c = GetCluster(); if (c) c->DeleteModel(this); } TmodelIGC::SetCluster(cluster); if (cluster) cluster->AddModel(this); Release(); } virtual void HandleCollision(Time timeCollision, float tCollision, const CollisionEntry& entry, ImodelIGC* pModel); // IprojectileIGC virtual IprojectileTypeIGC* GetProjectileType(void) const { return m_projectileType; } virtual ImodelIGC* GetLauncher(void) const { return m_launcher; } virtual void SetLauncher(ImodelIGC* newVal) { assert (!m_launcher); //Only set once assert (newVal); newVal->AddRef(); m_launcher = newVal; GetHitTest()->SetNoHit(m_launcher->GetHitTest()); SetSide(m_launcher->GetSide()); } virtual void SetGunner(IshipIGC* newVal) { assert (!m_launcher); //Only set once assert (newVal); newVal->AddRef(); m_launcher = newVal; GetHitTest()->SetNoHit(newVal->GetParentShip()->GetHitTest()); SetSide(m_launcher->GetSide()); } private: IprojectileTypeIGC* m_projectileType; ImodelIGC* m_launcher; ExplosionData* m_pExplosionData; Time m_timeExpire; }; #endif //__PROJECTILEIGC_H_