79 lines
2.2 KiB
C
79 lines
2.2 KiB
C
|
/**
|
||
|
* PANDA 3D SOFTWARE
|
||
|
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
||
|
*
|
||
|
* All use of this software is subject to the terms of the revised BSD
|
||
|
* license. You should have received a copy of this license along
|
||
|
* with this source code in a file named "LICENSE."
|
||
|
*
|
||
|
* @file cardMaker.h
|
||
|
* @author drose
|
||
|
* @date 2002-03-16
|
||
|
*/
|
||
|
|
||
|
#ifndef CARDMAKER_H
|
||
|
#define CARDMAKER_H
|
||
|
|
||
|
#include "pandabase.h"
|
||
|
|
||
|
#include "luse.h"
|
||
|
#include "pandaNode.h"
|
||
|
#include "pointerTo.h"
|
||
|
#include "namable.h"
|
||
|
#include "texture.h"
|
||
|
|
||
|
/**
|
||
|
* This class generates 2-d "cards", that is, rectangular polygons,
|
||
|
* particularly useful for showing textures etc. in the 2-d scene graph.
|
||
|
*/
|
||
|
class EXPCL_PANDA_GRUTIL CardMaker : public Namable {
|
||
|
PUBLISHED:
|
||
|
INLINE explicit CardMaker(const std::string &name);
|
||
|
INLINE ~CardMaker();
|
||
|
|
||
|
void reset();
|
||
|
void set_uv_range(const LTexCoord &ll, const LTexCoord &ur);
|
||
|
void set_uv_range(const LTexCoord &ll, const LTexCoord &lr, const LTexCoord &ur, const LTexCoord &ul);
|
||
|
void set_uv_range(const LTexCoord3 &ll, const LTexCoord3 &lr, const LTexCoord3 &ur, const LTexCoord3 &ul);
|
||
|
void set_uv_range(const LVector4 &x, const LVector4 &y, const LVector4 &z);
|
||
|
void set_uv_range_cube(int face);
|
||
|
void set_uv_range(const Texture *tex);
|
||
|
|
||
|
INLINE void set_has_uvs(bool flag);
|
||
|
INLINE void set_has_3d_uvs(bool flag);
|
||
|
|
||
|
INLINE void set_frame(PN_stdfloat left, PN_stdfloat right, PN_stdfloat bottom, PN_stdfloat top);
|
||
|
INLINE void set_frame(const LVecBase4 &frame);
|
||
|
INLINE void set_frame(const LVertex &ll, const LVertex &lr, const LVertex &ur, const LVertex &ul);
|
||
|
INLINE void set_frame_fullscreen_quad();
|
||
|
|
||
|
INLINE void set_color(PN_stdfloat r, PN_stdfloat g, PN_stdfloat b, PN_stdfloat a);
|
||
|
INLINE void set_color(const LColor &color);
|
||
|
|
||
|
INLINE void set_has_normals(bool flag);
|
||
|
|
||
|
INLINE void set_source_geometry(PandaNode *node, const LVecBase4 &frame);
|
||
|
INLINE void clear_source_geometry();
|
||
|
|
||
|
PT(PandaNode) generate();
|
||
|
|
||
|
private:
|
||
|
PT(PandaNode) rescale_source_geometry();
|
||
|
|
||
|
bool _has_uvs, _has_3d_uvs;
|
||
|
LVertex _ul_tex, _ll_tex, _lr_tex, _ur_tex;
|
||
|
LTexCoord3 _ul_pos, _ll_pos, _lr_pos, _ur_pos;
|
||
|
|
||
|
bool _has_color;
|
||
|
LColor _color;
|
||
|
|
||
|
bool _has_normals;
|
||
|
|
||
|
PT(PandaNode) _source_geometry;
|
||
|
LVecBase4 _source_frame;
|
||
|
};
|
||
|
|
||
|
#include "cardMaker.I"
|
||
|
|
||
|
#endif
|