//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1998 - 1998 // // File: d3drmwrapobj.cpp // //-------------------------------------------------------------------------- // d3drmWrapObj.cpp : Implementation of CDirectApp and DLL registration. #include "stdafx.h" #include "Direct.h" #include "dms.h" #include "d3drmWrapObj.h" CONSTRUCTOR(_dxj_Direct3dRMWrap, {}); DESTRUCTOR(_dxj_Direct3dRMWrap, {}); GETSET_OBJECT(_dxj_Direct3dRMWrap ); CLONE_R(_dxj_Direct3dRMWrap,Direct3DRMWrap); GETNAME_R(_dxj_Direct3dRMWrap); SETNAME_R(_dxj_Direct3dRMWrap); GETCLASSNAME_R(_dxj_Direct3dRMWrap); DELETEDESTROYCALLBACK_R(_dxj_Direct3dRMWrap) ADDDESTROYCALLBACK_R(_dxj_Direct3dRMWrap) PASS_THROUGH_CAST_1_R(_dxj_Direct3dRMWrap, setAppData, SetAppData, long,(DWORD)); GET_DIRECT_R(_dxj_Direct3dRMWrap, getAppData, GetAppData, long); ///////////////////////////////////////////////////////////////////////////// STDMETHODIMP C_dxj_Direct3dRMWrapObject::applyRelative(I_dxj_Direct3dRMFrame3 *ref, I_dxj_Direct3dRMObject *mesh) { DO_GETOBJECT_NOTNULL( LPDIRECT3DRMFRAME3, lpf, ref); DO_GETOBJECT_NOTNULL( IUnknown*, lpU, mesh); IDirect3DRMFrame *realf=NULL; HRESULT hr; LPDIRECT3DRMOBJECT lpObject=NULL; if (lpf) lpf->QueryInterface(IID_IDirect3DRMFrame,(void**)&realf); hr=lpU->QueryInterface(IID_IDirect3DRMObject,(void**)&lpObject); if FAILED(hr) return E_FAIL; hr= m__dxj_Direct3dRMWrap->ApplyRelative(realf, (LPDIRECT3DRMOBJECT)lpObject); if(lpObject) lpObject->Release(); if (realf) realf->Release(); return hr; } ///////////////////////////////////////////////////////////////////////////// STDMETHODIMP C_dxj_Direct3dRMWrapObject::apply(I_dxj_Direct3dRMObject *mesh) { DO_GETOBJECT_NOTNULL( IUnknown*, lpU, mesh); HRESULT hr; LPDIRECT3DRMOBJECT lpObject=NULL; hr=lpU->QueryInterface(IID_IDirect3DRMObject,(void**)&lpObject); if FAILED(hr) return E_FAIL; hr= m__dxj_Direct3dRMWrap->Apply((LPDIRECT3DRMOBJECT)lpObject); if(lpObject) lpObject->Release(); return hr; } ///////////////////////////////////////////////////////////////////////////// STDMETHODIMP C_dxj_Direct3dRMWrapObject::init( d3drmWrapType t, I_dxj_Direct3dRMFrame3 *ref, d3dvalue ox, d3dvalue oy, d3dvalue oz, d3dvalue dx, d3dvalue dy, d3dvalue dz, d3dvalue ux, d3dvalue uy, d3dvalue uz, d3dvalue ou , d3dvalue ov, d3dvalue su, d3dvalue sv) { _D3DRMWRAPTYPE value = (enum _D3DRMWRAPTYPE)t; HRESULT hr; LPDIRECT3DRMFRAME lpf2=NULL; DO_GETOBJECT_NOTNULL( LPDIRECT3DRMFRAME3, lpf, ref); if (lpf) { hr=lpf->QueryInterface(IID_IDirect3DRMFrame,(void**)&lpf2); if FAILED(hr) return hr; } hr= m__dxj_Direct3dRMWrap->Init(value,lpf2, ox, oy, oz, dx, dy, dz, ux, uy, uz, ou , ov, su, sv); if (lpf2) lpf2->Release(); return hr; }