Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include <vlVolume/link_config.hpp>
00033 #include <vlGraphics/Geometry.hpp>
00034 #include <vlGraphics/Actor.hpp>
00035
00036 #ifndef RaycastVolume_INCLUDE_ONCE
00037 #define RaycastVolume_INCLUDE_ONCE
00038
00039 namespace vl
00040 {
00041 class VLVOLUME_EXPORT RaycastVolume: public ActorEventCallback
00042 {
00043 VL_INSTRUMENT_CLASS(vl::RaycastVolume, ActorEventCallback)
00044
00045 public:
00046 RaycastVolume();
00047
00048 void onActorRenderStarted( Actor* actor, real frame_clock, const Camera* cam, Renderable* renderable, const Shader* shader, int pass );
00049
00050 void onActorDelete( Actor* ) {}
00051
00053 void bindActor( Actor* );
00054
00056 virtual void updateUniforms( Actor* actor, real clock, const Camera* camera, Renderable* rend, const Shader* shader );
00057
00059 Geometry* geometry() { return mGeometry.get(); }
00060
00062 const Geometry* geometry() const { return mGeometry.get(); }
00063
00065 void setBox( const AABB& box );
00066
00068 const AABB& box() const { return mBox; }
00069
00071 const fvec3* vertCoords() const { return mVertCoord->begin(); }
00072
00074 fvec3* vertCoords() { return mVertCoord->begin(); }
00075
00077 const fvec3* texCoords() const { return mTexCoord->begin(); }
00078
00080 fvec3* texCoords() { return mTexCoord->begin(); }
00081
00083 void generateTextureCoordinates( const ivec3& size );
00084
00087 void generateTextureCoordinates(const ivec3& img_size, const ivec3& min_corner, const ivec3& max_corner);
00088
00089 protected:
00090 ref<Geometry> mGeometry;
00091 AABB mBox;
00092 ref<ArrayFloat3> mTexCoord;
00093 ref<ArrayFloat3> mVertCoord;
00094 };
00095 }
00096
00097 #endif