// Filename: eggTopstrip.h
// Created by:  drose (23Feb01)
//
////////////////////////////////////////////////////////////////////
//
// 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 EGGTOPSTRIP_H
#define EGGTOPSTRIP_H

#include "pandatoolbase.h"

#include "eggCharacterFilter.h"
#include "luse.h"

#include "pvector.h"

class EggCharacterData;
class EggCharacterDb;
class EggJointData;
class EggJointPointer;

////////////////////////////////////////////////////////////////////
//       Class : EggTopstrip
// Description : Reads a character model and/or animations and strips
//               out the animation from one of the top joints from the
//               entire character.  Particularly useful for generating
//               stackable character models from separately-extracted
//               characters.
////////////////////////////////////////////////////////////////////
class EggTopstrip : public EggCharacterFilter {
public:
  EggTopstrip();

  void run();
  void check_transform_channels();

  void strip_anim(EggCharacterData *char_data, EggJointData *joint_data,
                  int from_model, EggCharacterData *from_char,
                  EggJointData *top_joint, EggCharacterDb &db);
  void strip_anim_vertices(EggNode *egg_node, int into_model,
                           int from_model, EggJointData *top_joint,
                           EggCharacterDb &db);

  void adjust_transform(LMatrix4d &mat) const;


  string _top_joint_name;
  bool _got_invert_transform;
  bool _invert_transform;
  string _transform_channels;
  Filename _channel_filename;
};

#endif

