/*************************************************************************
 *    CompuCell - A software framework for multimodel simulations of     *
 * biocomplexity problems Copyright (C) 2003 University of Notre Dame,   *
 *                             Indiana                                   *
 *                                                                       *
 * This program is free software; IF YOU AGREE TO CITE USE OF CompuCell  *
 *  IN ALL RELATED RESEARCH PUBLICATIONS according to the terms of the   *
 *  CompuCell GNU General Public License RIDER you can redistribute it   *
 * and/or modify it under the terms of the GNU General Public License as *
 *  published by the Free Software Foundation; either version 2 of the   *
 *         License, or (at your option) any later version.               *
 *                                                                       *
 * This program is distributed in the hope that it will be useful, but   *
 *      WITHOUT ANY WARRANTY; without even the implied warranty of       *
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    *
 *             General Public License for more details.                  *
 *                                                                       *
 *  You should have received a copy of the GNU General Public License    *
 *     along with this program; if not, write to the Free Software       *
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.        *
 *************************************************************************/

#ifndef MITOSISPLUGINVELOCITY_H
#define MITOSISPLUGINVELOCITY_H

#include <CompuCell3D/Plugin.h>

#include <CompuCell3D/Potts3D/Cell.h>


#include <CompuCell3D/Potts3D/CellGChangeWatcher.h>
#include <CompuCell3D/Potts3D/Stepper.h>

#include <BasicUtils/BasicArray.h>
#include <CompuCell3D/plugins/Mitosis/MitosisPlugin.h>

template <typename Y> class BasicClassAccessor;



namespace CompuCell3D {
   class Potts3D;
   class CellVelocityData;
   
  class MitosisPluginVelocity : public MitosisPlugin{
   private:
      BasicClassAccessor<CellVelocityData> * cellVelocityDataAccessorPtr; 
/*      float initialTargetVolume;
      float initialTargetSurface;*/
      
  public:
    MitosisPluginVelocity();
    virtual ~MitosisPluginVelocity();
/*    void setInitialTargetVolume(float _initialTargetVolume){initialTargetVolume=_initialTargetVolume;}
    void setInitialTargetSurface(float _initialTargetSurface){initialTargetSurface=_initialTargetSurface;}*/
    // SimObject interface
    virtual void init(Simulator *simulator);
/*
    // CellChangeWatcher interface
     virtual void field3DChange(const Point3D &pt, CellG *newCell,
                                CellG *oldCell);


    // Stepper interface
    virtual void step();
                                
    // Functions to turn on and off
    virtual void turnOn();
    virtual void turnOff();
    
    virtual bool doMitosis();///actually make mitosis - returns true if mitosis was done , false otherwise*/
    
    virtual void updateAttributes();///updates some of the cell attributes

/*    // Begin XMLSerializable interface
    virtual void readXML(XMLPullParser &in);
    virtual void writeXML(XMLSerializer &out);
    // End XMLSerializable interface*/
    
  };
};
#endif
