Пример #1
0
void AddPredefineds() {
    int i;

    for ( i=0; predefined[i].ch!='\0'; ++i )
	AddTransform(predefined[i].ch, predefined[i].oldstate,
		predefined[i].newstate, predefined[i].result );
}
Пример #2
0
bool HesperisIO::WriteTransforms(const MDagPathArray & paths, HesperisFile * file, const std::string & beheadName)
{
	file->setWriteComponent(HesperisFile::WTransform);
    file->setDirty();
	
	unsigned i = 0;
	for(;i<paths.length();i++) AddTransform(paths[i], file, beheadName);
	
	bool fstat = file->save();
	if(!fstat) MGlobal::displayWarning(MString(" cannot save transform to file ")+ file->fileName().c_str());
	file->close();
	return true;
}
Пример #3
0
void ParseUnicodeFile(FILE *in) {
    char buffer[600];
    int ch, mask, base, lc, i;
    char *pt;

    while ( mygets(in,buffer)!=NULL ) {
	ch = strtol(buffer,NULL,16);
	if ( ch==0x1ec0 )
	    ch = 0x1ec0;
	pt = buffer+4;
	if ( strncmp(pt,";LATIN ",7)!=0 )
    continue;
	pt += 7;
	if ( strncmp(pt,"CAPITAL ",8)==0 ) {
	    lc = 0;
	    pt += 8;
	} else if ( strncmp(pt,"SMALL ",6)==0 ) {
	    lc = 1;
	    pt += 6;
	} else
    continue;
	if ( strncmp(pt,"LETTER ",7)!=0 )
    continue;
	pt += 7;
	base = *pt++;
	if ( lc ) base = tolower(base);
	if ( strncmp(pt," WITH ",6)!=0 )
    continue;
	pt += 6;
	mask = 0;
	forever {
	    for ( i=0; names2[i].name!=NULL; ++i ) {
		if ( strncmp(pt,names2[i].name,strlen(names2[i].name))==0 )
	    break;
	    }
	    if ( names2[i].name==NULL || names2[i].mask==0 )
    goto continue_2_loop;
	    mask |= names2[i].mask;
	    pt += strlen(names2[i].name);
	    while ( *pt!=';' && !(*pt==' ' && pt[1]=='A' && pt[2]=='N' && pt[3]=='D' && pt[4]==' '))
		++pt;
	    if ( *pt==';' )
	break;
	    else
		pt += 5;
	}
	AddTransform(base,mask,0,ch);
    continue_2_loop:;
    }
    fclose(in);
}
Пример #4
0
static int rad_load_transforms(struct Protocol *prot, CONF_SECTION *cf)
{
	CONF_PAIR *cp;
	int option_exists = 0;
	int i = 0;

	rad_assert(prot);
	rad_assert(cf);

	DEBUG(IKEv2_LOG_PREFIX "Begin load transforms");

	while(config_transforms[i].name)
	{
		uint8_t id;
		uint16_t keylen;

		for(cp = cf_pair_find(cf,config_transforms[i].name);
		    cp;
		    cp = cf_pair_find_next(cf,cp,config_transforms[i].name)) {
			if (TransformFromName(cf_pair_value(cp),config_transforms[i].type,&id,&keylen)) {
				ERROR(IKEv2_LOG_PREFIX "Unsupported %s transform: %s ",
				      config_transforms[i].name,cf_pair_value(cp));
				return -1;
			}

			if (!AddTransform(prot,config_transforms[i].type,id,keylen)) {
				ERROR(IKEv2_LOG_PREFIX "Problem with transform %s:%s",
				      config_transforms[i].name,cf_pair_value(cp));
				return -1;
			}
			option_exists |= config_transforms[i].exist_flag;
		}
		i++;
	}

	if ((option_exists & OPT_NEEDED) != OPT_NEEDED) {
		ERROR(IKEv2_LOG_PREFIX "Not all mandatory transforms are set properly");
		DEBUG(IKEv2_LOG_PREFIX "Option flags: 0x%02X",option_exists);

		return -1;
	}
	return 0;
}
Пример #5
0
bool HesperisIO::AddTransform(const MDagPath & path, HesperisFile * file, const std::string & beheadName)
{
	MFnDagNode fdg(path);
	if(fdg.parentCount() < 1) return false;
	
	MGlobal::displayInfo(MString("hes io add transform ")+path.fullPathName());

	MObject oparent = fdg.parent(0);
	MFnDagNode fp(oparent);
	MDagPath pp;
	fp.getPath(pp);
	AddTransform(pp, file, beheadName);
	
	std::string nodeName = path.fullPathName().asChar();
	if(beheadName.size() > 1) SHelper::behead(nodeName, beheadName);
// todo extract tm    
	file->addTransform(nodeName, new BaseTransform);
	return true;
}
Пример #6
0
bool HesperisIO::AddTransform(const MDagPath & path, HesperisFile * file )
{
	const std::string nodeName = H5PathNameTo(path);
	if(nodeName.size() < 2 ) return false;
	
	MFnDagNode fdg(path);
	if(fdg.parentCount() < 1) return false;
	
// AHelper::Info<MString>("hes io add transform ", path.fullPathName());

	MObject oparent = fdg.parent(0);
	MFnDagNode fp(oparent);
	MDagPath pp;
	fp.getPath(pp);
	AddTransform(pp, file);
	
// todo extract tm    
	file->addTransform( nodeName, new BaseTransform );
	return true;
}
Пример #7
0
void radTg3d::ActualEnergyForceTorqueComp(radTField* FieldPtr)
{
	TVector3d ZeroVect(0.,0.,0.);
	const double DeltaL = 1.E-01; // mm
	//const double DeltaL = 1.; // mm
	const double DeltaTeta = 1.E-03; // rad

	radTField LocField(FieldPtr->FieldKey, FieldPtr->CompCriterium, FieldPtr->HandleEnergyForceTorqueCompData);
	double& Enr = LocField.Energy;
	double Ex1, Ex2, Ey1, Ey2, Ez1, Ez2;

	if(FieldPtr->FieldKey.Energy_)
	{
		Enr = 0.;
		(g3dListOfTransform.empty())? SimpleEnergyComp(&LocField) : NestedFor_Energy(&LocField, g3dListOfTransform.begin());
		FieldPtr->Energy += LocField.Energy;
	}
	if(FieldPtr->FieldKey.ForceEnr_)
	{
		LocField.CompCriterium.BasedOnWorstRelPrec = 1;

		TVector3d DeltaX(-DeltaL/2., 0., 0.), DeltaY(0., -DeltaL/2., 0.),  DeltaZ(0., 0., -DeltaL/2.);
		radTrans *SmallTranslXPtr = new radTrans(), *SmallTranslYPtr = new radTrans(), *SmallTranslZPtr = new radTrans();
		radThg hTranslX(SmallTranslXPtr), hTranslY(SmallTranslYPtr), hTranslZ(SmallTranslZPtr);
		SmallTranslXPtr->SetupTranslation(DeltaX); SmallTranslYPtr->SetupTranslation(DeltaY); SmallTranslZPtr->SetupTranslation(DeltaZ);

		AddTransform(1, hTranslX); 
		//AddTransform_OtherSide(1, hTranslX);
		Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ex1 = Enr;
		SmallTranslXPtr->Invert(); Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ex2 = Enr;
		EraseOuterTransform(); 
		//EraseInnerTransform(); 

		AddTransform(1, hTranslY);
		//AddTransform_OtherSide(1, hTranslY);
		Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ey1 = Enr;
		SmallTranslYPtr->Invert(); Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ey2 = Enr;
		EraseOuterTransform(); 
		//EraseInnerTransform(); 

		AddTransform(1, hTranslZ); 
		//AddTransform_OtherSide(1, hTranslZ);
		Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ez1 = Enr;
		SmallTranslZPtr->Invert(); Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ez2 = Enr;
		EraseOuterTransform();
		//EraseInnerTransform(); 

		double Const = 1000./DeltaL;
		TVector3d LocForce(Const*(Ex1 - Ex2), Const*(Ey1 - Ey2), Const*(Ez1 - Ez2));
		if(FieldPtr->FieldKey.ForceEnr_) FieldPtr->Force += LocForce;
	}
	if(FieldPtr->FieldKey.Torque_)
	{
		LocField.CompCriterium.BasedOnWorstRelPrec = 1;

		radTrans *SmallRotXaxPtr = new radTrans(), *SmallRotYaxPtr = new radTrans(), *SmallRotZaxPtr = new radTrans();
		radThg hRotX(SmallRotXaxPtr), hRotY(SmallRotYaxPtr), hRotZ(SmallRotZaxPtr);

		TVector3d OrtX(1.,0.,0.), OrtY(0.,1.,0.), OrtZ(0.,0.,1.);
		SmallRotXaxPtr->SetupRotation(FieldPtr->P, OrtX, -DeltaTeta/2.);
		SmallRotYaxPtr->SetupRotation(FieldPtr->P, OrtY, -DeltaTeta/2.);
		SmallRotZaxPtr->SetupRotation(FieldPtr->P, OrtZ, -DeltaTeta/2.);

		AddTransform(1, hRotX); 
		//AddTransform_OtherSide(1, hRotX);
		Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ex1 = Enr;
		SmallRotXaxPtr->Invert(); Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ex2 = Enr;
		EraseOuterTransform(); 
		//EraseInnerTransform(); 

		AddTransform(1, hRotY); 
		//AddTransform_OtherSide(1, hRotY);
		Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ey1 = Enr;
		SmallRotYaxPtr->Invert(); Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ey2 = Enr;
		EraseOuterTransform(); 
		//EraseInnerTransform(); 

		AddTransform(1, hRotZ); 
		//AddTransform_OtherSide(1, hRotZ);
		Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ez1 = Enr;
		SmallRotZaxPtr->Invert(); Enr = 0.; NestedFor_Energy(&LocField, g3dListOfTransform.begin()); Ez2 = Enr;
		EraseOuterTransform();
		//EraseInnerTransform(); 

		double Const = 1000./DeltaTeta;
		TVector3d LocTorque(Const*(Ex1 - Ex2), Const*(Ey1 - Ey2), Const*(Ez1 - Ez2));
		if(FieldPtr->FieldKey.Torque_) FieldPtr->Torque += LocTorque;
	}
}
Пример #8
0
void TestScene::Start( void )
{
	TRACE( "TestScene Start method!" );

	Entity& qMark = entityManager.New( "qMark" );

	//TODO: Need to add delete* methods to remove components
	AddTransform( qMark );
	AddSprite( qMark, "MarioQuestionBlockTexture");

	GetTransform( qMark ).translation.z = 5;

	GetTransform( qMark ).scale.x = 512;
	GetTransform( qMark ).scale.y = 512;

	GetSprite( qMark ).TextureDimensions.right = 2.0f;
	GetSprite( qMark ).TextureDimensions.bottom = 2.0f;

	//TESTING ANIMATED SPRITES//

	Entity& animTest = entityManager.New( "animTest" );
	
	AddTransform( animTest );
	AddAnimatedSprite( animTest );

	Transform& animTransform = GetTransform( animTest );
	animTransform.translation.x = -300;
	animTransform.translation.y = -200;
	animTransform.translation.z = 6;
	animTransform.scale.x = 100;
	animTransform.scale.y = 100;

	Animation2D testAnimation( "test" );
	Frame one = animatedSprites.NewFrame( EngineDuration( std::chrono::seconds( 1 ) ), "uvtest" );
	Frame two = animatedSprites.NewFrame( EngineDuration( std::chrono::seconds( 1 ) ), "uvtest" );
	Frame three = animatedSprites.NewFrame( EngineDuration( std::chrono::seconds( 1 ) ), "uvtest" );

	one.TextureDimensions.right = 0.1f;
	one.TextureDimensions.bottom = 0.1f;

	two.TextureDimensions.left = 0.1f;
	two.TextureDimensions.right = 0.2f;
	two.TextureDimensions.bottom = 0.1f;

	three.TextureDimensions.left = 0.2f;
	three.TextureDimensions.right = 0.3f;
	three.TextureDimensions.bottom = 0.1f; 

	testAnimation.AddFrame( one );
	testAnimation.AddFrame( two );
	testAnimation.AddFrame( three );

	GetAnimatedSprite( animTest ).AddAnimation( testAnimation );
	GetAnimatedSprite( animTest ).PlayAnimation( "test", Animation2D::PlaybackMode::LOOP );

	//TRANSPARENCY TEST//
	Entity& tTest = entityManager.New( "tTest" );

	AddTransform( tTest );
	AddSprite( tTest, "fucknope" );

	GetTransform( tTest ).scale.x = 79;
	GetTransform( tTest ).scale.y = 103;
	GetTransform( tTest ).translation.z = 4;

	State = SceneState::UPDATE;
}