14#ifndef TRANSFORMBLEND_H
15#define TRANSFORMBLEND_H
32class EXPCL_PANDA_GOBJ TransformBlend {
34 INLINE TransformBlend();
35 INLINE TransformBlend(
const VertexTransform *transform0, PN_stdfloat weight0);
36 INLINE TransformBlend(
const VertexTransform *transform0, PN_stdfloat weight0,
37 const VertexTransform *transform1, PN_stdfloat weight1);
38 INLINE TransformBlend(
const VertexTransform *transform0, PN_stdfloat weight0,
39 const VertexTransform *transform1, PN_stdfloat weight1,
40 const VertexTransform *transform2, PN_stdfloat weight2);
41 INLINE TransformBlend(
const VertexTransform *transform0, PN_stdfloat weight0,
42 const VertexTransform *transform1, PN_stdfloat weight1,
43 const VertexTransform *transform2, PN_stdfloat weight2,
44 const VertexTransform *transform3, PN_stdfloat weight3);
45 INLINE TransformBlend(
const TransformBlend ©);
46 INLINE
void operator = (
const TransformBlend ©);
47 INLINE ~TransformBlend();
49 int compare_to(
const TransformBlend &other)
const;
50 INLINE
bool operator < (
const TransformBlend &other)
const;
51 INLINE
bool operator == (
const TransformBlend &other)
const;
52 INLINE
bool operator != (
const TransformBlend &other)
const;
54 void add_transform(
const VertexTransform *transform, PN_stdfloat weight);
59 PN_stdfloat
get_weight(
const VertexTransform *transform)
const;
66 INLINE
void set_transform(
size_t n,
const VertexTransform *transform);
67 INLINE
void set_weight(
size_t n, PN_stdfloat weight);
89 void output(std::ostream &out)
const;
90 void write(std::ostream &out,
int indent_level)
const;
95 void recompute_result(CData *cdata,
Thread *current_thread);
96 void clear_result(
Thread *current_thread);
98 class TransformEntry {
100 INLINE
bool operator < (
const TransformEntry &other)
const;
102 CPT(VertexTransform) _transform;
110 class EXPCL_PANDA_GOBJ CData :
public CycleData {
113 INLINE CData(
const CData ©);
116 return TransformBlend::get_class_type();
121 UpdateSeq _global_modified;
124 PipelineCycler<CData> _cycler;
125 typedef CycleDataLockedReader<CData> CDLockedReader;
126 typedef CycleDataReader<CData> CDReader;
127 typedef CycleDataWriter<CData> CDWriter;
130 void write_datagram(BamWriter *manager, Datagram &dg)
const;
131 int complete_pointers(TypedWritable **plist, BamReader *manager);
132 void fillin(DatagramIterator &scan, BamReader *manager);
134 friend class VertexTransform;
137 static TypeHandle get_class_type() {
140 static void init_type() {
145 static TypeHandle _type_handle;
148INLINE std::ostream &operator << (std::ostream &out,
const TransformBlend &obj);
A single page of data maintained by a PipelineCycler.
A thread; that is, a lightweight process.
get_current_thread
Returns a pointer to the currently-executing Thread object.
TypeHandle is the identifier used to differentiate C++ class types.
This is a sequence number that increments monotonically.
A specialization of ordered_vector that emulates a standard STL set: one copy of each element is allo...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...