#pragma once #include "renderer.h" #include "Object3d.h" #include "RenderPass.h" #include "Vector.h" #include #include "Sprite.h" class SharedResourceTexture; class ParticleRenderer : public Renderer { public: ParticleRenderer(void); ~ParticleRenderer(void); virtual void init(); virtual void render(); virtual void OnLostDevice( void* pUserContext ); virtual void OnDestroyDevice( void* pUserContext ); virtual HRESULT OnResetDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext ); virtual bool isLowerThan(Renderer* renderer); struct spriteSortFunction { Vector cameraPos; spriteSortFunction(Vector _cameraPos) { cameraPos = _cameraPos; } bool operator()(Sprite* &s1, Sprite* &s2) { return s1->camDistance > s2->camDistance; } }; bool needHeatHazePass(); void renderHeatHaze(); virtual bool needsExtraPass(); void renderSingleParticle(); void setRenderSingleParticle(bool _singleParticle); protected: bool singleParticle; IDirect3DTexture9* depthTexture; LPDIRECT3DSURFACE9 depthSurface; SharedResourceTexture* sr; ID3DXEffect* ParticleEffect; float nearPlane; float farPlane; Vector cameraPos; };