*** empty log message ***
This commit is contained in:
parent
5259b71393
commit
032f773b53
|
|
@ -1347,10 +1347,12 @@ make_node(EggGroup *egg_group, NamedNode *parent) {
|
|||
make_node(*ci, node);
|
||||
}
|
||||
|
||||
} else if (egg_group->get_model_flag()) {
|
||||
// A model flag; create a model node.
|
||||
} else if (egg_group->get_model_flag() || egg_group->get_dcs_flag()) {
|
||||
// A model or DCS flag; create a model node.
|
||||
node = new ModelNode;
|
||||
node->set_name(egg_group->get_name());
|
||||
|
||||
DCAST(ModelNode, node)->set_preserve_transform(egg_group->get_dcs_flag());
|
||||
|
||||
EggGroup::const_iterator ci;
|
||||
for (ci = egg_group->begin(); ci != egg_group->end(); ++ci) {
|
||||
|
|
|
|||
|
|
@ -19,9 +19,10 @@ static const unsigned short _bam_major_ver = 3;
|
|||
// Bumped to major version 2 on 7/6/00 due to major changes in Character.
|
||||
// Bumped to major version 3 on 12/8/00 to change float64's to float32's.
|
||||
|
||||
static const unsigned short _bam_minor_ver = 1;
|
||||
static const unsigned short _bam_minor_ver = 2;
|
||||
// Bumped to minor version 1 on 12/15/00 to add FFT-style channel
|
||||
// compression.
|
||||
// Bumped to minor version 2 on 2/15/01 to add ModelNode::_preserve_transform.
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -28,10 +28,11 @@
|
|||
// geometry is *not* coplanar with the base geometry.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
class EXPCL_PANDA DecalTransition : public OnOffTransition {
|
||||
public:
|
||||
PUBLISHED:
|
||||
INLINE DecalTransition();
|
||||
INLINE static DecalTransition off();
|
||||
|
||||
|
||||
public:
|
||||
virtual NodeTransition *make_copy() const;
|
||||
virtual NodeAttribute *make_attrib() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelNode::Constructor
|
||||
// Access: Public
|
||||
|
|
@ -12,6 +13,32 @@ INLINE ModelNode::
|
|||
ModelNode(const string &name) :
|
||||
NamedNode(name)
|
||||
{
|
||||
_preserve_transform = false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelNode::set_preserve_transform
|
||||
// Access: Public
|
||||
// Description: Sets the preserve_transform flag. When this flag is
|
||||
// true, flattening the scene graph will not flatten out
|
||||
// any transformation assigned above this node;
|
||||
// otherwise, any transforms applying to this node may
|
||||
// or may not be flattened.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE void ModelNode::
|
||||
set_preserve_transform(bool preserve_transform) {
|
||||
_preserve_transform = preserve_transform;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelNode::get_preserve_transform
|
||||
// Access: Public
|
||||
// Description: Returns the current setting of the preserve_transform
|
||||
// flag. See set_preserve_transform().
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE bool ModelNode::
|
||||
get_preserve_transform() const {
|
||||
return _preserve_transform;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -21,7 +48,8 @@ ModelNode(const string &name) :
|
|||
////////////////////////////////////////////////////////////////////
|
||||
INLINE ModelNode::
|
||||
ModelNode(const ModelNode ©) :
|
||||
NamedNode(copy)
|
||||
NamedNode(copy),
|
||||
_preserve_transform(copy._preserve_transform)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -33,4 +61,5 @@ ModelNode(const ModelNode ©) :
|
|||
INLINE void ModelNode::
|
||||
operator = (const ModelNode ©) {
|
||||
NamedNode::operator = (copy);
|
||||
_preserve_transform = copy._preserve_transform;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,33 @@ make_copy() const {
|
|||
return new ModelNode(*this);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelNode::safe_to_flatten
|
||||
// Access: Public, Virtual
|
||||
// Description: Returns true if it is generally safe to flatten out
|
||||
// this particular kind of Node by duplicating
|
||||
// instances, false otherwise (for instance, a Camera
|
||||
// cannot be safely flattened, because the Camera
|
||||
// pointer itself is meaningful).
|
||||
////////////////////////////////////////////////////////////////////
|
||||
bool ModelNode::
|
||||
safe_to_flatten() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelNode::safe_to_transform
|
||||
// Access: Public, Virtual
|
||||
// Description: Returns true if it is generally safe to transform
|
||||
// this particular kind of Node by calling the xform()
|
||||
// method, false otherwise. For instance, it's usually
|
||||
// a bad idea to attempt to xform a Character.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
bool ModelNode::
|
||||
safe_to_transform() const {
|
||||
return !_preserve_transform;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelNode::register_with_factory
|
||||
// Access: Public, Static
|
||||
|
|
@ -52,3 +79,37 @@ make_ModelNode(const FactoryParams ¶ms) {
|
|||
me->fillin(scan, manager);
|
||||
return me;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelNode::write_datagram
|
||||
// Access: Public, Virtual
|
||||
// Description: Function to write the important information in
|
||||
// the particular object to a Datagram
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void ModelNode::
|
||||
write_datagram(BamWriter *manager, Datagram &me) {
|
||||
NamedNode::write_datagram(manager, me);
|
||||
|
||||
me.add_bool(_preserve_transform);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: ModelNode::fillin
|
||||
// Access: Protected
|
||||
// Description: Function that reads out of the datagram (or asks
|
||||
// manager to read) all of the data that is needed to
|
||||
// re-create this object and stores it in the appropiate
|
||||
// place
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void ModelNode::
|
||||
fillin(DatagramIterator &scan, BamReader *manager) {
|
||||
NamedNode::fillin(scan, manager);
|
||||
|
||||
if (manager->get_file_minor_ver() < 2) {
|
||||
// No _preserve_transform before bams 3.2.
|
||||
_preserve_transform = false;
|
||||
} else {
|
||||
_preserve_transform = scan.get_bool();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,18 +26,29 @@ class EXPCL_PANDA ModelNode : public NamedNode {
|
|||
PUBLISHED:
|
||||
INLINE ModelNode(const string &name = "");
|
||||
|
||||
INLINE void set_preserve_transform(bool preserve_transform);
|
||||
INLINE bool get_preserve_transform() const;
|
||||
|
||||
public:
|
||||
INLINE ModelNode(const ModelNode ©);
|
||||
INLINE void operator = (const ModelNode ©);
|
||||
|
||||
virtual Node *make_copy() const;
|
||||
|
||||
virtual bool safe_to_flatten() const;
|
||||
virtual bool safe_to_transform() const;
|
||||
|
||||
public:
|
||||
static void register_with_read_factory(void);
|
||||
|
||||
protected:
|
||||
virtual void write_datagram(BamWriter *manager, Datagram &me);
|
||||
void fillin(DatagramIterator &scan, BamReader *manager);
|
||||
static TypedWriteable *make_ModelNode(const FactoryParams ¶ms);
|
||||
|
||||
private:
|
||||
bool _preserve_transform;
|
||||
|
||||
public:
|
||||
static TypeHandle get_class_type() {
|
||||
return _type_handle;
|
||||
|
|
|
|||
Loading…
Reference in New Issue