Files
RCBASIC4/rcbasic_runtime/ProjectiveTextures.h
2026-02-22 03:04:03 -06:00

69 lines
1.8 KiB
C++
Executable File

//#include "main.h"
#include <irrlicht.h>
#ifndef __CProjectiveTextures__
#define __CProjectiveTextures__
class CProjectiveTextures : public irr::video::IShaderConstantSetCallBack, public irr::scene::ISceneNode
{
public:
// Constructor / Destructor.
CProjectiveTextures(irr::IrrlichtDevice* dev, irr::scene::ISceneNode* parent, irr::scene::ISceneManager* mgr, irr::s32 id,
const irr::core::vector3df& position = irr::core::vector3df(0,0,0),
const irr::core::vector3df& lookat = irr::core::vector3df(0,0,0));
~CProjectiveTextures();
//! Sets the look at target of the projector
virtual void setTarget(const irr::core::vector3df& pos);
//! Gets the current look at target of the projector
virtual const irr::core::vector3df& getTarget() const;
//! Sets the field of view (Default: PI / 3.5f)
virtual void setFOV(irr::f32 f);
//! Gets the field of view (Default: PI / 3.5f)
virtual irr::f32 getFOV();
//! Returns the axis aligned bounding box of this node
virtual const irr::core::aabbox3d<irr::f32>& getBoundingBox() const;
//! Render
virtual void render();
virtual void OnSetConstants(irr::video::IMaterialRendererServices* services, irr::s32 userData);
irr::video::ITexture* texture;
irr::core::array<irr::scene::ISceneNode*> nodeArray;
private:
int projTex;
irr::video::SMaterial projMat;
protected:
void recalculateProjectionMatrix();
void recalculateViewArea();
irr::core::vector3df Target;
irr::f32 Fovy; // Field of view, in radians.
irr::scene::SViewFrustum ViewArea;
irr::IrrlichtDevice * pDevice;
irr::video::IVideoDriver * pVideo;
irr::scene::ISceneManager * pScene;
irr::gui::IGUIEnvironment * pGUI;
irr::video::IGPUProgrammingServices * pGPU;
irr::ILogger * pLog;
irr::scene::ISceneCollisionManager * pCollision;
};
#endif