// $Source: /usr/local/SimSoft/Sfx3D/src/gsl/platz.cpp,v $
// $Revision: 1.2 $
// $Author: baum $
// $Date: 2001/11/29 15:18:09 $
//
// Login name of the user who locked the revision
// $Locker:  $
// Tag name used to checkout the file
// $Name:  $
// State assigned to revision
// $State: Exp $
//
//
// $Log: platz.cpp,v $
// Revision 1.2  2001/11/29 15:18:09  baum
// -Realzeitsteuerung eingebaut
// -Handsteuerung eingebaut
//

#include "MathDefs.h"

#define _PLATZ_CPP
#include "baustein.h"
#include "sfx.h"
#include "platz.h"


//---------------------------------------------------------
// class typPlatz
//---------------------------------------------------------

typPlatz::typPlatz (unsigned nr, const Vec3D& relKoord, typBaustein *zBst)
 : ObjNummer     (nr),
   ObjRelKoord   (relKoord),
   ObjBuchung    (NULL),
   ObjTransportEinheit (NULL),
   ObjBaustein   (zBst)
   //ObjGreiferId (0)
 { }

typPlatz::~typPlatz ()
 { }

unsigned typPlatz::Nummer () const {
  return ObjNummer;
}
/*
unsigned typPlatz::GreiferId (unsigned neueId) { //Norman 21.01.02 Wird bisher nur für den Mehrfachlader verwendet um mehrere Palettenplätze einem Hubarm zuordnen zu können
  if (neueId != NULL) {
  	ObjGreiferId = neueId;
  }
  return ObjGreiferId;
}
*/

Vec3D typPlatz::Position () const {
  Vec3D  v (ObjRelKoord);
  	return ObjBaustein->ObjDrehGeometry->PtToSpace (v);  //??? Wieso DrehGeometry? Mark 17.03.03
   //return ObjBaustein->ObjGeometry.PtToSpace (v);
}


typBaustein *typPlatz::Baustein () const {
  return ObjBaustein;
}

typTransportEinheit *typPlatz::TransportEinheit () const {
  return ObjTransportEinheit;
}

void typPlatz::setTransportEinheit (typTransportEinheit *zTE) {
  if ((ObjBuchung == NULL) || (zTE == ObjBuchung))
    ObjTransportEinheit = zTE;
  else
    sim_error ("PLATZ", "typPlatz::setTransportEinheit",
               "falsche TransportEinheit auf Baustein", 
               ObjBaustein->Nummer (), FATAL);
}

typTransportEinheit *typPlatz::Buchung () const {
  return ObjBuchung;
}

void typPlatz::setBuchung (typTransportEinheit *zw) {
  ObjBuchung = zw;
}

bool typPlatz::isVerfuegbar () const {
  return !(ObjTransportEinheit || ObjBuchung);
}


//Lars
void typPlatz::movePosition (Vec3D& v) {
	ObjRelKoord += v;
}

