123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327 |
- #ifndef __IAGCModelImpl_h__
- #define __IAGCModelImpl_h__
- /////////////////////////////////////////////////////////////////////////////
- // IAGCModelImpl.h : Declaration of the IAGCModelImpl class template.
- //
- #include "IAGCBaseImpl.h"
- /////////////////////////////////////////////////////////////////////////////
- // Interface Map Macro
- //
- // Classes derived from IAGCModelImpl should include this macro in their
- // interface maps.
- //
- #define COM_INTERFACE_ENTRIES_IAGCModelImpl() \
- COM_INTERFACE_ENTRY(IAGCModel) \
- COM_INTERFACE_ENTRY(IDispatch) \
- COM_INTERFACE_ENTRIES_IAGCBaseImpl()
- /////////////////////////////////////////////////////////////////////////////
- // IAGCModelImpl
- //
- template <class T, class IGC, class ITF, const GUID* plibid, class AGCIGC = IGC, class AGCITF = ITF>
- class ATL_NO_VTABLE IAGCModelImpl :
- public IAGCBaseImpl<T, IGC, ITF, plibid, AGCIGC, AGCITF>
- {
- // Types
- public:
- typedef IAGCModelImpl<T, IGC, ITF, plibid, AGCIGC, AGCITF> IAGCModelImplBase;
- // IAGCModel Interface Methods
- public:
- /*-------------------------------------------------------------------------
- * get_IsVisible()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- STDMETHODIMP get_IsVisible(VARIANT_BOOL* pbVisible)
- {
- assert(GetIGC());
- CLEAROUT(pbVisible, VARBOOL(GetIGC()->GetVisibleF()));
- return S_OK;
- }
- /*-------------------------------------------------------------------------
- * get_IsSeenBySide()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- STDMETHODIMP get_IsSeenBySide(IAGCTeam* pTeam, VARIANT_BOOL* pbSeen)
- {
- assert(GetIGC());
- IAGCPrivatePtr spPrivate(pTeam);
- if (NULL == spPrivate)
- return E_INVALIDARG;
- CLEAROUT(pbSeen,
- VARBOOL(GetIGC()->SeenBySide((IsideIGC*)spPrivate->GetIGCVoid())));
- return S_OK;
- }
- /*-------------------------------------------------------------------------
- * get_Position()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- STDMETHODIMP get_Position(IAGCVector** ppVector)
- {
- assert(GetIGC());
- // Create an instance of the AGCVector object
- return GetAGCGlobal()->MakeAGCVector(GetIGC()->GetHitTest() ?
- &GetIGC()->GetPosition() : NULL, ppVector);
- }
- /*-------------------------------------------------------------------------
- * get_Velocity()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- STDMETHODIMP get_Velocity(IAGCVector** ppVector)
- {
- assert(GetIGC());
- // Create an instance of the AGCVector object
- return GetAGCGlobal()->MakeAGCVector(GetIGC()->GetHitTest() ?
- &GetIGC()->GetVelocity() : NULL, ppVector);
- }
- /*-------------------------------------------------------------------------
- * get_Orientation()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- STDMETHODIMP get_Orientation(IAGCOrientation** ppOrientation)
- {
- assert(GetIGC());
- // Create an instance of the AGCOrientation object
- return GetAGCGlobal()->MakeAGCOrientation(GetIGC()->GetHitTest() ?
- &GetIGC()->GetOrientation() : NULL, ppOrientation);
- }
- /*-------------------------------------------------------------------------
- * get_Radius()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- STDMETHODIMP get_Radius(float* pfRadius)
- {
- assert(GetIGC());
- CLEAROUT(pfRadius, GetIGC()->GetHitTest() ? GetIGC()->GetRadius() : 0.f);
- return S_OK;
- }
- /*-------------------------------------------------------------------------
- * get_Team()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- STDMETHODIMP get_Team(IAGCTeam** ppTeam)
- {
- assert(GetIGC());
- if (GetIGC()->GetSide())
- return GetAGCGlobal()->GetAGCObject(GetIGC()->GetSide(), IID_IAGCTeam,
- (void**)ppTeam);
- CLEAROUT(ppTeam, (IAGCTeam*)NULL);
- return S_OK;
- }
- /*-------------------------------------------------------------------------
- * get_Mass()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- STDMETHODIMP get_Mass(float* pfMass)
- {
- assert(GetIGC());
- CLEAROUT(pfMass, GetIGC()->GetMass());
- return S_OK;
- }
- /*-------------------------------------------------------------------------
- * get_Sector()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- STDMETHODIMP get_Sector(IAGCSector** ppSector)
- {
- assert(GetIGC());
- if (!GetIGC()->GetCluster())
- {
- CLEAROUT(ppSector, (IAGCSector*)NULL);
- return S_OK;
- }
- return GetAGCGlobal()->GetAGCObject(GetIGC()->GetCluster(),
- IID_IAGCSector, (void**)ppSector);
- }
- /*-------------------------------------------------------------------------
- * get_Signature()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- STDMETHODIMP get_Signature(float* pfSignature)
- {
- assert(GetIGC());
- CLEAROUT(pfSignature, GetIGC()->GetSignature());
- return S_OK;
- }
- /*-------------------------------------------------------------------------
- * get_Name()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- STDMETHOD(get_Name)(/*[out, retval]*/ BSTR* pVal)
- {
- assert(GetIGC());
- CLEAROUT(pVal, (BSTR)NULL);
- CComBSTR bstrTemp(GetModelName(GetIGC()));
- *pVal = bstrTemp.Detach();
- return S_OK;
- }
- /*-------------------------------------------------------------------------
- * get_IsSelectable()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- /* STDMETHODIMP get_IsSelectable(VARIANT_BOOL* pbSelectable)
- {
- assert(GetIGC());
- // FIX make this work
- // FIX implement clearout
- // * = GetIGC()->Get;
- return S_OK;
- }
- */
- /*-------------------------------------------------------------------------
- * get_IsScanner()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- /* STDMETHODIMP get_IsScanner(VARIANT_BOOL* pbScanner)
- {
- assert(GetIGC());
- // FIX implement clearout
- * = GetIGC()->Get;
- return S_OK;
- }
- */
- /*-------------------------------------------------------------------------
- * get_IsPredictable()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- /* STDMETHODIMP get_IsPredictable(VARIANT_BOOL* pbPredictable)
- {
- assert(GetIGC());
- // FIX implement clearout
- * = GetIGC()->Get;
- return S_OK;
- }
- */
- /*-------------------------------------------------------------------------
- * get_IsScanRequired()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- /* STDMETHODIMP get_IsScanRequired(VARIANT_BOOL* pbScanRequired)
- {
- assert(GetIGC());
- // FIX implement clearout
- * = GetIGC()->Get;
- return S_OK;
- }
- */
- /*-------------------------------------------------------------------------
- * get_IsStatic()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- /* STDMETHODIMP get_IsStatic(VARIANT_BOOL* pbStatic)
- {
- assert(GetIGC());
- // FIX implement clearout
- * = GetIGC()->Get;
- return S_OK;
- }
- */
- /*-------------------------------------------------------------------------
- * get_IsDamagable()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- /* STDMETHODIMP get_IsDamagable(VARIANT_BOOL* pbDamagable)
- {
- assert(GetIGC());
- // FIX implement clearout
- * = GetIGC()->Get;
- return S_OK;
- }
- */
- /*-------------------------------------------------------------------------
- * get_IsHitable()
- *-------------------------------------------------------------------------
- * Purpose:
- *
- *
- */
- /* STDMETHODIMP get_IsHitable(VARIANT_BOOL* pbHitable)
- {
- assert(GetIGC());
- // FIX implement clearout
- * = GetIGC()->Get;
- return S_OK;
- }
- */
- };
- /////////////////////////////////////////////////////////////////////////////
- #endif //__IAGCModelImpl_h__
|