int PseudoReplicatorGadget::process(GadgetContainerMessage<IsmrmrdReconData>* m) {

	std::mt19937 engine;
	std::normal_distribution<float> distribution;

	auto m_copy = *m->getObjectPtr();
	//First just send the normal data to obtain standard image
	if (this->next()->putq(m) == GADGET_FAIL)
			return GADGET_FAIL;

	//Now for the noisy projections
	for (int i =0; i < repetitions_; i++){

		auto cm = new GadgetContainerMessage<IsmrmrdReconData>();
		*cm->getObjectPtr() = m_copy;
		auto & datasets = cm->getObjectPtr()->rbit_;

		for (auto & buffer : datasets){
			auto & data = buffer.data_.data_;
			auto dataptr = data.get_data_ptr();
			for (size_t k =0; k <  data.get_number_of_elements(); k++){
				dataptr[k] += std::complex<float>(distribution(engine),distribution(engine));
			}
		}
		GDEBUG("Sending out Pseudoreplica\n");

		if (this->next()->putq(cm) == GADGET_FAIL)
			return GADGET_FAIL;

	}
	return GADGET_OK;

}
Beispiel #2
0
hx::Object *CppiaCtx::runObjectPtr(void *vtable)
{
   if (breakContReturn) return 0;
   GET_RETURN_VAL(return getObjectPtr(),etObject );
   //printf("No Object return?\n");
   return 0;
}
Beispiel #3
0
IAnimCtrl	*USkeleton::getBoneAnimCtrl(uint boneId) const
{
	NL3D_HAUTO_UI_SKELETON;

	CSkeletonModel	*object = getObjectPtr();
	return object->getBoneAnimCtrl(boneId);
}
  int DistributeGadget::close(unsigned long flags)
  {
    int ret = Gadget::close(flags);
    if (flags) {
      mtx_.acquire();

      for (auto n = node_map_.begin(); n != node_map_.end(); n++) {
        if (n->second) {
          auto m1 = new GadgetContainerMessage<GadgetMessageIdentifier>();
          m1->getObjectPtr()->id = GADGET_MESSAGE_CLOSE;

          if (n->second->putq(m1) == -1) {
            GERROR("Unable to put CLOSE package on queue\n");
            return -1;
          }
	}
      }

      auto it = node_map_.begin();
      while (it != node_map_.end()) {
        if (it->second) {
          it->second->wait();
          delete it->second;
        }
        node_map_.erase(it);
        it = node_map_.begin();
      }

      mtx_.release();
      GDEBUG("All connectors closed. Waiting for Gadget to close\n");
    }
    return ret;
  }
Beispiel #5
0
void		USkeleton::setBoneAnimCtrl(uint boneId, IAnimCtrl *ctrl)
{
	NL3D_HAUTO_UI_SKELETON;

	CSkeletonModel	*object = getObjectPtr();
	object->setBoneAnimCtrl(boneId, ctrl);
}
Beispiel #6
0
bool		USkeleton::isBoneComputed(uint boneId) const
{
	NL3D_HAUTO_UI_SKELETON;

	CSkeletonModel	*object = getObjectPtr();
	return object->isBoneComputed(boneId);
}
Beispiel #7
0
void		USkeleton::computeLodTexture()
{
	NL3D_HAUTO_UI_SKELETON;

	CSkeletonModel	*object = getObjectPtr();
	object->computeLodTexture();
}
Beispiel #8
0
bool USkeleton::forceComputeBone(uint boneId)
{
	NL3D_HAUTO_UI_SKELETON;

	CSkeletonModel	*object = getObjectPtr();
	return object->forceComputeBone(boneId);
}
Beispiel #9
0
void		USkeleton::setInterpolationDistance(float dist)
{
	NL3D_HAUTO_UI_SKELETON;

	CSkeletonModel	*object = getObjectPtr();
	object->setInterpolationDistance(dist);
}
Beispiel #10
0
sint		USkeleton::getBoneIdByName(const std::string &boneName) const
{
	NL3D_HAUTO_UI_SKELETON;

	CSkeletonModel	*object = getObjectPtr();
	return object->getBoneIdByName(boneName);
}
Beispiel #11
0
float		USkeleton::getInterpolationDistance() const
{
	NL3D_HAUTO_UI_SKELETON;

	CSkeletonModel	*object = getObjectPtr();
	return object->getInterpolationDistance();
}
Beispiel #12
0
uint		USkeleton::getNumBoneComputed() const
{
	NL3D_HAUTO_UI_SKELETON;

	CSkeletonModel	*object = getObjectPtr();

	return object->getNumBoneComputed();
}
Beispiel #13
0
UBone		USkeleton::getBone(uint boneId) const
{
	NL3D_HAUTO_UI_SKELETON;
	CSkeletonModel	*object = getObjectPtr();

	if(boneId>=object->Bones.size())
		nlerror("getBone(): bad boneId");
	return UBone (&(object->Bones[boneId]));
}
Beispiel #14
0
// ***************************************************************************
void			UTransform::unfreezeHRC()
{
	CTransform	*object = getObjectPtr();
	while (object)
	{
		object->unfreezeHRC();
		object = object->hrcGetParent();
	}
}
Beispiel #15
0
void		USkeleton::stickObjectEx(UTransform mi, uint boneId, bool forceCLod)
{
	NL3D_HAUTO_UI_SKELETON;
	CSkeletonModel	*object = getObjectPtr();

	if(mi.empty())
		nlerror("USkeleton::stickObject(): mi is NULL");
	CTransform		*trans= dynamic_cast<CTransform*>(mi.getObjectPtr());
	object->stickObjectEx(trans, boneId, forceCLod);
}
Beispiel #16
0
void		USkeleton::detachSkeletonSon(UTransform mi)
{
	NL3D_HAUTO_UI_SKELETON;
	CSkeletonModel	*object = getObjectPtr();

	if(mi.empty())
		nlerror("USkeleton::detachSkeletonSon(): mi is NULL");
	CTransform		*trans= dynamic_cast<CTransform*>(mi.getObjectPtr());
	object->detachSkeletonSon(trans);
}
Beispiel #17
0
void		USkeleton::setShapeDistMax(float distMax)
{
	NL3D_HAUTO_UI_SKELETON;
	CSkeletonModel	*object = getObjectPtr();

	if(object && object->Shape)
	{
		object->Shape->setDistMax(distMax);
	}
}
Beispiel #18
0
// ***************************************************************************
UInstanceGroup *UTransform::getClusterSystem () const
{
	CTransform	*object = getObjectPtr();
	CInstanceGroup	*ig= object->getClusterSystem();
	if(ig==((CInstanceGroup*)-1))
		return ((UInstanceGroup*)-1);
	else if(ig==NULL)
		return NULL;
	else
		return ig->getUserInterface();
}
Beispiel #19
0
float		USkeleton::getShapeDistMax() const
{
	NL3D_HAUTO_UI_SKELETON;
	CSkeletonModel	*object = getObjectPtr();

	if(object && object->Shape)
	{
		return object->Shape->getDistMax();
	}
	else
		return -1;
}
Beispiel #20
0
bool		USkeleton::computeCurrentBBox(NLMISC::CAABBox &bbox, UPlayList *playList, double playTime, bool forceCompute /* = false */, bool computeInWorld)
{
	NL3D_HAUTO_UI_SKELETON;
	CSkeletonModel	*object = getObjectPtr();

	if(playList!=NULL)
	{
		CPlayListUser	*plUser= static_cast<CPlayListUser*>(playList);
		plUser->evalPlayList(playTime);
	}

	return object->computeCurrentBBox(bbox, forceCompute, computeInWorld);
}
  int GadgetInstrumentationStreamController::return_recondata(ACE_Message_Block* mb){
    GILLock lock;
    auto m1 = AsContainerMessage<IsmrmrdReconData>(mb);
    try{
      python_gadget_.attr("put_next")(*m1->getObjectPtr());
    } catch(boost::python::error_already_set const &) {
      GERROR("Passing recondata on to python wrapper gadget failed\n");
      std::string python_error = pyerr_to_string();
      GDEBUG(python_error.c_str());
      return GADGET_FAIL;

    }
    return GADGET_OK;
  }
Beispiel #22
0
// ***************************************************************************
void USkeleton::getStickedObjects(std::vector<UTransform> &sticks)
{
	NL3D_HAUTO_UI_SKELETON;

	sticks.clear();

	CSkeletonModel	*sm= getObjectPtr();
	if(!sm)
		return;

	const std::set<CTransform*>	&stickSet= sm->getStickedObjects();
	std::set<CTransform*>::const_iterator	it= stickSet.begin();
	sticks.reserve(stickSet.size());
	for(;it!=stickSet.end();it++)
	{
		sticks.push_back(*it);
	}
}
Beispiel #23
0
bool		USkeleton::bindSkin(UInstance mi)
{
	NL3D_HAUTO_UI_SKELETON;

	if(mi.empty())
	{
		nlerror("USkeleton::bindSkin(): mi is NULL");
		return false;
	}
	CTransform			*trans= dynamic_cast<CTransform*>(mi.getObjectPtr());
	CMeshBaseInstance	*meshi= dynamic_cast<CMeshBaseInstance*>(trans);
	if(meshi==NULL)
	{
		nlerror("USkeleton::bindSkin(): mi is not a MeshInstance or MeshMRMInstance");
		return false;
	}
	CSkeletonModel	*object = getObjectPtr();
	return object->bindSkin(meshi);
}
Beispiel #24
0
// ***************************************************************************
void UTransform::setClusterSystem (UInstanceGroup *pIG)
{
	NL3D_HAUTO_SET_CLUSTER_SYSTEM

	CTransform	*object = getObjectPtr();
	if (object->getForceClipRoot())
	{
		nlwarning("Transform has been flagged to be glued to the root, and thus can't be clusterized. See UTransform::setForceClipRoot(bool).");
		return;
	}
	if ((pIG == NULL) || (pIG == (UInstanceGroup*)-1))
	{
		if (pIG == NULL)
			object->setClusterSystem (NULL);
		else
			object->setClusterSystem ((CInstanceGroup*)-1);
	}
	else
		object->setClusterSystem (&((CInstanceGroupUser*)pIG)->getInternalIG());
}
Beispiel #25
0
// ***************************************************************************
void			UTransform::parent(UTransform newFather)
{
	CTransform	*object = getObjectPtr();
	if (object->getForceClipRoot())
	{
		nlwarning("Transform has been flagged to be glued to the root, can't change parent. See UTransform::setForceClipRoot(bool).");
		return;
	}
	if(!newFather.empty())
	{
		// link me to other.
		CTransform	*other= newFather.getObjectPtr();
		if(other->getOwnerScene()!=object->getOwnerScene())
			nlerror("Try to parent 2 object from 2 differnet scenes!!");
		other->hrcLinkSon( object );
	}
	else
	{
		// link me to Root.
		object->getOwnerScene()->getRoot()->hrcLinkSon( object );
	}
}
Beispiel #26
0
// ***************************************************************************
void			UTransform::getLastParentClusters(std::vector<CCluster*> &clusters) const
{
	CTransform	*object = getObjectPtr();
	CScene *scene = object->getOwnerScene();
	// look in the list of parent of the transform object and extract the CCluster parents
	if (scene == NULL)
		return;

	CClipTrav	&clipTrav= scene->getClipTrav();

	uint	num= object->clipGetNumParents();
	for(uint i=0;i<num;i++)
	{
		CCluster *pcluster = dynamic_cast<CCluster*>(object->clipGetParent(i));
		if (pcluster != NULL)
			clusters.push_back(pcluster);
	}

	// If the object is link to a QuadCluster, add the RootCluster to the list
	CTransformShape	*trShp= dynamic_cast<CTransformShape*>( object );
	if( trShp && trShp->isLinkToQuadCluster() )
		clusters.push_back(clipTrav.RootCluster);
}
Beispiel #27
0
// ***************************************************************************
const std::string		&USkeleton::getShapeName() const
{
	NL3D_HAUTO_UI_SKELETON;

	static std::string emptyStr;

	CSkeletonModel	*object = getObjectPtr();
	if(!object)
		return emptyStr;

	// get the shape bank
	CScene *scene= object->getOwnerScene();
	CShapeBank	*sb= scene->getShapeBank();
	if(!sb)
		return emptyStr;

	// get the shape name
	const std::string *str= sb->getShapeNameFromShapePtr(object->Shape);
	if(str)
		return *str;
	else
		return emptyStr;

}
Beispiel #28
0
// ***************************************************************************
NLMISC::CRGBA	USkeleton::getLodEmit() const
{
	return getObjectPtr()->getLodEmit();
}
Beispiel #29
0
// ***************************************************************************
void			USkeleton::setLodEmit(NLMISC::CRGBA emit)
{
	getObjectPtr()->setLodEmit(emit);
}
Beispiel #30
0
// ***************************************************************************
const NLMISC::CVector	&USkeleton::getSSSWODir() const
{
	NL3D_HAUTO_UI_SKELETON;
	CSkeletonModel	*object = getObjectPtr();
	return object->getSSSWODir();
}