Exemple #1
0
void *op_brick_add(t_brick *brick)
{
	t_context *C = ctx_get();
	t_node *node = NULL;
	t_block *block;
	t_set *set;

	// store
	scene_store(C->scene,1);

	char *name=brick->id.name;

	     if(is(name,"frame")) 		node = add_slider_int(C,"frame",&C->app->frame); 
	else if(is(name,"timer"))  		node = add_slider_float(C,"timer",&C->app->timer); 
	else if(is(name,"timer low"))  		node = add_slider_float(C,"timer low",&C->app->timer_add_low); 
	else if(is(name,"=")) 			node = add_operator_double(C,"=");
	else if(is(name,">"))  			node = add_operator_double(C,">"); 
	else if(is(name,"<"))  			node = add_operator_double(C,"<"); 
	else if(is(name,"if")) 			node = add_if(C); 
	else if(is(name,"mod"))  		node = add_operator_double(C,"mod"); 
	else if(is(name,"x")) 			node = add_maths(C,"x");
	else if(is(name,"+"))  			node = add_maths(C,"+"); 
	else if(is(name,"++")) 			node = add_plusplus(C);
	else if(is(name,"switch"))  		node = add_switch(C,"switch",NULL,NULL); 
	else if(is(name,"clone"))  		node = add_clone(C); 
	else if(is(name,"pipe")) 		node = add_pipe(C); 
	else if(is(name,"sec")) 		node = add_slider_int(C,"sec",&C->app->clock->sec);
	else if(is(name,"min")) 		node = add_slider_int(C,"min",&C->app->clock->min);
	else if(is(name,"int")) 		node = add_slider_int(C,"int",NULL);
	else if(is(name,"float")) 		node = add_slider_float(C,"float",NULL);
	else if(is(name,"10")) 			node = add_multiplier(C,"10");
	else if(is(name,"100")) 		node = add_multiplier(C,"100");
	else if(is(name,".1")) 			node = add_multiplier(C,".1");
	else if(is(name,".01")) 		node = add_multiplier(C,".01");
	else if(is(name,".001")) 		node = add_multiplier(C,".001");
	else if(is(name,"msec")) 		node = add_slider_int(C,"msec",&C->app->clock->msec);
	else if(is(name,"cos")) 		node = add_operator_single(C,"cos",op_cos);
	else if(is(name,"sin")) 		node = add_operator_single(C,"sin",op_sin);
	else if(is(name,"cam_eye_x")) 		node = add_slider_camera(C,"eye x");
	else if(is(name,"cam_eye_y")) 		node = add_slider_camera(C,"eye y");
	else if(is(name,"cam_eye_z")) 		node = add_slider_camera(C,"eye z");
	else if(is(name,"cam_pos_x")) 		node = add_slider_camera(C,"pos x");
	else if(is(name,"cam_pos_y")) 		node = add_slider_camera(C,"pos y");
	else if(is(name,"cam_pos_z")) 		node = add_slider_camera(C,"pos z");
	else if(is(name,"cam_rot_xy")) 		node = add_slider_float_custom(C,"cam rot xy",op_camera_rotate_xy); 
	else if(is(name,"cam_rot_z")) 		node = add_slider_float_custom(C,"cam rot z",op_camera_rotate_z); 
	else if(is(name,"pos x")) 		node = add_slider_object(C,"pos x");
	else if(is(name,"pos y")) 		node = add_slider_object(C,"pos y");
	else if(is(name,"pos z")) 		node = add_slider_object(C,"pos z");
	else if(is(name,"rot x")) 		node = add_slider_object(C,"rot x");
	else if(is(name,"rot y")) 		node = add_slider_object(C,"rot y");
	else if(is(name,"rot z")) 		node = add_slider_object(C,"rot z");
	else if(is(name,"scl x")) 		node = add_slider_object(C,"scl x");
	else if(is(name,"scl y")) 		node = add_slider_object(C,"scl y");
	else if(is(name,"scl z")) 		node = add_slider_object(C,"scl z");
	else if(is(name,"red")) 		node = add_slider_object(C,"red");
	else if(is(name,"green")) 		node = add_slider_object(C,"green");
	else if(is(name,"blue")) 		node = add_slider_object(C,"blue");
	else if(is(name,"color")) 		node = add_slider_object(C,"color");
	else if(is(name,"faces")) 		node = add_slider_object(C,"faces");
	else if(is(name,"alpha")) 		node = add_slider_object(C,"alpha");
	else if(is(name,"label")) 		node = add_label(C,"label");
	else if(is(name,"get")) 		node = add_get(C);
	else if(is(name,"rewind")) 		node = add_trigger_always(C,"rewind",op_rewind); 
	else if(is(name,"not")) 		node = add_slider_int_custom(C,"not",NULL,op_not); 
	else if(is(name,"mouse_x")) 		node = add_slider_int(C,"mouse x",&C->app->mouse->x); 
	else if(is(name,"mouse_y")) 		node = add_slider_int(C,"mouse y",&C->app->mouse->y); 
	else if(is(name,"keyboard")) 		node = add_slider_char(C,"keyboard",&C->app->keyboard->key_pressed); 
	else if(is(name,"rnd")) 		node = add_slider_int_custom(C,"rnd",NULL,op_rnd);
	else if(is(name,"neg")) 		node = add_slider_int_custom(C,"neg",NULL,op_neg);
	else if(is(name,"abs")) 		node = add_slider_int_custom( C, "abs", NULL, op_abs); 
	else if(is(name,"last?")) 		node = add_switch(C,"last?",NULL,op_is_last);
	else if(is(name,"for")) 		node = add_for(C);
	else if(is(name,"vector 3d")) 		node = add_vector_3d(C);
	else if(is(name,"vector 2d")) 		node = add_vector_2d(C);
	else if(is(name,"bang")) 		node = add_slider_int_custom(C,"bang",NULL,op_bang); 
	else if(is(name,"quit")) 		node = add_trigger_always(C,"quit",op_do_quit); 
	else if(is(name,"const")) 		node = add_const(C); 
	else if(is(name,"and")) 		node = add_maths(C,"and"); 
	else if(is(name,"stack")) 		node = add_stack(C); 
	else if(is(name,"mesh")) 		node = add_slider_object(C,"mesh"); 
	else if(is(name,"vertex")) 		node = add_brick_mesh(C,"vertex"); 
	else if(is(name,"edges")) 		node = add_brick_mesh(C,"edges"); 
	else if(is(name,"case")) 		node = add_case(C,"switch"); 

	// Store
	scene_store(C->scene,0);

	term_log("+ brick");

	// Switch Desk
	if(!C->ui->show_sets) show_sets(C);

	if( node)
	{
		block = node->data;
		set = block->set;
		set_setup( set);
	}
		
	return NULL;
}
Exemple #2
0
void vlst_show(t_vlst *vlst)
{
	t_context *C = ctx_get();
	if(vlst)
	{
		int i;
		int count=vlst->count;
		int length=vlst->length;
		void *dat=vlst->data;

		if(C->event->debug_terminal)
			printf("[VLST] type:%s name:%s count:%d length:%d\n", data_name_get(vlst->type), vlst->id.name, count, length);
		else 
			printf("C->event->debug_terminal must be on !\n");
		if(C->event->debug_console)
			term_log("[VLST] type:%s name:%s count:%d length:%d", data_name_get(vlst->type), vlst->id.name, count, length);

		if( term) term_l( term, "[VLST] type:%s name:%s count:%d length:%d", data_name_get(vlst->type), vlst->id.name, count, length);

		if(dat)
		{
			if(vlst->type == dt_float)
			{
				if(vlst->length == 3)
				{
					float *d=(float *)dat;
					for(i=0;i<count;i++)
					{
						if(C->event->debug_terminal)
							printf("[%d] %f %f %f\n",i,d[0],d[1],d[2]);
						if(C->event->debug_console)
							term_log("[%d] %f %f %f",i,d[0],d[1],d[2]);
						if( term)
							term_l( term, "[%d] %f %f %f",i,d[0],d[1],d[2]);

						d+=length;
					}
				}
				else if(vlst->length == 4)
				{
					float *d=(float *)dat;
					for(i=0;i<count;i++)
					{
						if(C->event->debug_terminal)
							printf("[%d] %f %f %f %f\n",i,d[0],d[1],d[2],d[3]);
						if(C->event->debug_console)
							term_log("[%d] %f %f %f %f",i,d[0],d[1],d[2],d[3]);
						if( term)
							term_l( term, "[%d] %f %f %f %f",i,d[0],d[1],d[2],d[3]);

						d+=length;
					}
				}
			}

			else if(vlst->type == dt_uint)
			{
				if(vlst->length == 2)
				{
					unsigned int *d=(unsigned int *)dat;
					for(i=0;i<count;i++)
					{
						if(C->event->debug_terminal)
							printf("[%d] %u %u \n",i,d[0],d[1]);
						if(C->event->debug_console)
							term_log("[%d] %u %u",i,d[0],d[1]);
						if( term)
							term_l( term, "[%d] %u %u",i,d[0],d[1]);

						d+=length;
					}
				}
				else if(vlst->length == 3)
				{
					unsigned int *d=(unsigned int *)dat;
					for(i=0;i<count;i++)
					{
						if(C->event->debug_terminal)
							printf("[%d] %u %u %u \n",i,d[0],d[1],d[2]);
						if(C->event->debug_console)
							term_log("[%d] %u %u %u",i,d[0],d[1],d[2]);
						if( term)
							term_l( term, "[%d] %u %u %u",i,d[0],d[1],d[2]);

						d+=length;
					}
				}
				else if(vlst->length == 4)
				{
					unsigned int *d=(unsigned int *)dat;
					for(i=0;i<count;i++)
					{
						if(C->event->debug_terminal)
							printf("[%d] %u %u %u %u\n",i,d[0],d[1],d[2],d[3]);
						if(C->event->debug_console)
							term_log("[%d] %u %u %u %u",i,d[0],d[1],d[2],d[3]);
						if( term)
							term_l( term, "[%d] %u %u %u %u",i,d[0],d[1],d[2],d[3]);
						d+=length;
					}
				}
			}
			else if(vlst->type == dt_int)
			{
				if(vlst->length == 4)
				{
					int *d=(int *)dat;
					for(i=0;i<count;i++)
					{
						if(C->event->debug_terminal)
							printf("[%d] %d %d %d %d\n",i,d[0],d[1],d[2],d[3]);
						if(C->event->debug_console)
							term_log("[%d] %d %d %d %d",i,d[0],d[1],d[2],d[3]);
						if( term)
							term_l( term, "[%d] %d %d %d %d",i,d[0],d[1],d[2],d[3]);
						d+=length;
					}
				}

				else if(vlst->length == 2)
				{
					int *d=(int *)dat;
					for(i=0;i<count;i++)
					{
						if(C->event->debug_terminal)
							printf("[%d] %d %d \n",i,d[0],d[1]);
						if(C->event->debug_console)
							term_log("[%d] %d %d",i,d[0],d[1]);
						if( term)
							term_l( term, "[%d] %d %d",i,d[0],d[1]);
						d+=length;
					}
				}
			}
		}
		else
		{
			printf("NO DATA\n");
		}
	}
}
Exemple #3
0
void __cls_plug_flow_operator_for(t_plug_mode mode,t_plug *plug,t_plug *plug_src)
{
	t_context *C =ctx_get();

	t_plug *plug_in = plug->src;
	t_brick *brick = plug->brick;

	// get bricks
	t_block *block = brick->block;
	t_brick *brick_indice = block_brick_get(block,"indice");
	t_brick *brick_vector = block_brick_get(block,"vector");

	t_plug *plug_indice = &brick_indice->plug_intern;
	t_plug *plug_vector = &brick_vector->plug_intern;
	t_plug *plug_vector_in = &brick_vector->plug_in;

	int *data_indice = plug_indice->data;
	t_vector *vector = plug_vector->data;

	// IN
	if(mode == mode_in)
	{
		// reset vector
		vector->data = NULL;

		// if for connected
		if(plug_in->is_connected )
		{
			// get src
			t_plug *src_plug = plug_get_src(plug);
			t_data_type src_type = src_plug->data_type;

			t_vlst *vlst=NULL;

			switch(src_type)
			{
				// + VLST
				case dt_vlst:

					// SET VLST
					vlst = src_plug->data;

					// SET vector
					if(vlst)
					{
						vector->data = vlst->data;
						vector->type = vlst->data_type;
						vector->length = vlst->length;
					}

					break;
					
				default:
					plug_warning(plug,src_plug);
					break;
			}

			// SET VECTOR
			if(plug_vector_in->is_connected)
			{
				if(vlst)
				{
					// set vector, open for fisrt loop
					//if(!plug->is_eval)
					if(!for_init)
					//if(1==2)
					{

						if(C->ui->show_step) term_log(":FOR loop (INIT) %d",brick->counter);
						plug->is_eval = 1;
						for_init = 1;

						// get pointer
						float *ptr = vlst->data;

						// set pointer
						vector->data = ptr;

						// set indice
						*data_indice=0;

						t_plug *plug_vector_src = plug_vector_in->src;
						t_brick *brick_vector_src = plug_vector_src->brick;

						brick_vector_src->cls->trigger(brick_vector_src);

						


							t_lst *BRICKS = ctx_links_lst_get();
							lst_add(BRICKS,brick,"for");
					}
					else
					{
						if(brick->counter < vlst->count)
						{
							if(C->ui->show_step) term_log(":FOR loop %d",brick->counter);
							// get pointer
							float *ptr = vlst->data;

							// set pointer
							vector->data = ptr + (vlst->length * brick->counter);

							// set indice
							*data_indice=brick->counter;

							// get branch (all bricks)
							t_lst *lst=lst_new("lst");
							block_branch_get(0,lst,block);

							// reset states
							ctx_links_reset(C,lst);

							// add to loop
							t_lst *BRICKS = ctx_links_lst_get();

							t_link *l;
							t_brick *b;
							for(l=lst->first;l;l=l->next)
							{

								b = l->data;
								lst_add(BRICKS,l->data,b->name);
							}

							// free
							lst_free(lst);


							// counter ++
							brick->counter++;

						}
						else
						{
							//XXX
							vector->data = NULL;
							// reset counter
							brick->counter = 0;

							for_init=0;
						}
					}
				}
			}
			else
			{
				*data_indice = 0;

			}
		}
	}
}