Panda3D
eggVertexUV.h
Go to the documentation of this file.
1 /**
2  * PANDA 3D SOFTWARE
3  * Copyright (c) Carnegie Mellon University. All rights reserved.
4  *
5  * All use of this software is subject to the terms of the revised BSD
6  * license. You should have received a copy of this license along
7  * with this source code in a file named "LICENSE."
8  *
9  * @file eggVertexUV.h
10  * @author drose
11  * @date 2004-07-20
12  */
13 
14 #ifndef EGGVERTEXUV_H
15 #define EGGVERTEXUV_H
16 
17 #include "pandabase.h"
18 
19 #include "eggMorphList.h"
20 #include "eggNamedObject.h"
21 
22 #include "luse.h"
23 
24 /**
25  * The set of UV's that may or may not be assigned to a vertex. To support
26  * multitexturing, there may be multiple sets of UV's on a particular vertex,
27  * each with its own name.
28  */
29 class EXPCL_PANDA_EGG EggVertexUV : public EggNamedObject {
30 PUBLISHED:
31  explicit EggVertexUV(const std::string &name, const LTexCoordd &uv);
32  explicit EggVertexUV(const std::string &name, const LTexCoord3d &uvw);
33  EggVertexUV(const EggVertexUV &copy);
34  EggVertexUV &operator = (const EggVertexUV &copy);
35  virtual ~EggVertexUV();
36 
37  INLINE static std::string filter_name(const std::string &name);
38  INLINE void set_name(const std::string &name);
39 
40  INLINE int get_num_dimensions() const;
41  INLINE bool has_w() const;
42  INLINE LTexCoordd get_uv() const;
43  INLINE const LTexCoord3d &get_uvw() const;
44  INLINE void set_uv(const LTexCoordd &texCoord);
45  INLINE void set_uvw(const LTexCoord3d &texCoord);
46 
47  INLINE bool has_tangent() const;
48  INLINE bool has_tangent4() const;
49  INLINE const LNormald &get_tangent() const;
50  INLINE LVecBase4d get_tangent4() const;
51  INLINE void set_tangent(const LNormald &tangent);
52  INLINE void set_tangent4(const LVecBase4d &tangent);
53  INLINE void clear_tangent();
54 
55  INLINE bool has_binormal() const;
56  INLINE const LNormald &get_binormal() const;
57  INLINE void set_binormal(const LNormald &binormal);
58  INLINE void clear_binormal();
59 
60  static PT(EggVertexUV) make_average(const EggVertexUV *first,
61  const EggVertexUV *second);
62 
63  void transform(const LMatrix4d &mat);
64 
65  void write(std::ostream &out, int indent_level) const;
66  int compare_to(const EggVertexUV &other) const;
67 
69 
70 private:
71  enum Flags {
72  F_has_tangent = 0x001,
73  F_has_binormal = 0x002,
74  F_has_w = 0x004,
75  F_has_tangent4 = 0x008,
76 
77  // Only defined temporarily as we can't add a float to this class in 1.10.
78  F_flip_computed_binormal = 0x010,
79  };
80 
81  int _flags;
82  LNormald _tangent;
83  LNormald _binormal;
84  LTexCoord3d _uvw;
85 
86 public:
87  static TypeHandle get_class_type() {
88  return _type_handle;
89  }
90  static void init_type() {
91  EggNamedObject::init_type();
92  register_type(_type_handle, "EggVertexUV",
93  EggNamedObject::get_class_type());
94  }
95  virtual TypeHandle get_type() const {
96  return get_class_type();
97  }
98  virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
99 
100 private:
101  static TypeHandle _type_handle;
102 };
103 
104 #include "eggVertexUV.I"
105 
106 #endif
pandabase.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
register_type
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
Definition: register_type.I:22
compare_to
An STL function object class, this is intended to be used on any ordered collection of class objects ...
Definition: stl_compares.h:73
TypeHandle
TypeHandle is the identifier used to differentiate C++ class types.
Definition: typeHandle.h:81
EggMorphList< EggMorphTexCoord >
luse.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
EggVertexUV
The set of UV's that may or may not be assigned to a vertex.
Definition: eggVertexUV.h:29
eggNamedObject.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
eggMorphList.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
EggNamedObject
This is a fairly low-level base class–any egg object that has a name.
Definition: eggNamedObject.h:26
eggVertexUV.I
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.