open_toontown_panda3d/pandatool/src/maxegg/maxNodeDesc.h

87 lines
2.5 KiB
C++
Executable File

// Filename: maxNodeDesc.h
// Created by: crevilla
// from mayaNodeDesc.h created by: drose (06Jun03)
//
////////////////////////////////////////////////////////////////////
//
// 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."
//
////////////////////////////////////////////////////////////////////
#ifndef MAXNODEDESC_H
#define MAXNODEDESC_H
////////////////////////////////////////////////////////////////////
// Class : MaxNodeDesc
// Description : Describes a single instance of a node in the Max
// scene graph, relating it to the corresponding egg
// structures (e.g. node, group, or table entry) that
// will be created.
////////////////////////////////////////////////////////////////////
class MaxNodeDesc : public ReferenceCount, public Namable {
public:
MaxNodeDesc(MaxNodeDesc *parent = NULL, const string &name = string());
~MaxNodeDesc();
void from_INode(INode *max_node);
bool has_max_node() const;
INode *get_max_node() const;
void set_joint(bool onoff);
bool is_joint() const;
bool is_joint_parent() const;
bool is_node_joint() const;
MaxNodeDesc *_parent;
MaxNodeDesc *_joint_entry;
typedef pvector< MaxNodeDesc* > Children;
Children _children;
private:
void clear_egg();
void mark_joint_parent();
void check_pseudo_joints(bool joint_above);
INode *_max_node;
EggGroup *_egg_group;
EggTable *_egg_table;
EggXfmSAnim *_anim;
enum JointType {
JT_none, // Not a joint.
JT_node_joint, // Node that represents a joint in the geometry
// but not the actual joint itself
JT_joint, // An actual joint in Max.
JT_pseudo_joint, // Not a joint in Max, but treated just like a
// joint for the purposes of the converter.
JT_joint_parent, // A parent or ancestor of a joint or pseudo joint.
};
JointType _joint_type;
public:
static TypeHandle get_class_type() {
return _type_handle;
}
static void init_type() {
ReferenceCount::init_type();
Namable::init_type();
register_type(_type_handle, "MaxNodeDesc",
ReferenceCount::get_class_type(),
Namable::get_class_type());
}
private:
static TypeHandle _type_handle;
friend class MaxNodeTree;
};
#endif