Advertisement
Guest User

d3d_model_to_vertex_buffer

a guest
Oct 21st, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ///d3d_model_to_vertex_buffer(vertex buffer,model,x,y,z,rotx,roty,rotz,scale)
  2. var buff,file, trans_x, trans_y, trans_z, num_lines, file, version, read_line, i, _x, _y, _z, _uvx, _uvy, _xv, _yv, _zv,my_matrix,scale;
  3. rotation_xyz_array[4]=0;
  4.  
  5. //fetching arguments
  6. my_buff=argument0;
  7. trans_x=argument2;
  8. trans_y=argument3;
  9. trans_z=argument4;
  10. rot_x=argument5;
  11. rot_y=argument6;
  12. rot_z=argument7;
  13. scale=argument8;
  14.  
  15. //access the model file
  16. file=file_text_open_read(argument1);
  17.  
  18. //model update number- worthless honestly.
  19. version = file_text_read_real(file);
  20. if file_text_eoln(file) {file_text_readln(file)}
  21.  
  22. //how many vertex batches we need to recover from the file
  23. num_lines = file_text_read_real(file);
  24. if file_text_eoln(file) {file_text_readln(file)}
  25.  
  26. i=0;
  27. while i<num_lines-1
  28.         {    
  29.                 read_line=file_text_read_real(file);
  30.                 switch (read_line)
  31.                 {
  32.                 case 1: file_text_readln(file); file_text_close(file); exit; break;
  33.                 case 0: file_text_readln(file); i+=1; break;
  34.                 case 9:
  35.                
  36.                  _x=file_text_read_real(file);
  37.                  _y=file_text_read_real(file);
  38.                  _z=file_text_read_real(file);
  39.                  _nx=file_text_read_real(file);
  40.                  _ny=file_text_read_real(file);
  41.                  _nz=file_text_read_real(file);
  42.                  _uvx=file_text_read_real(file);
  43.                  _uvy=file_text_read_real(file);
  44.                  _col=file_text_read_real(file);
  45.                  _alph=file_text_read_real(file);
  46.                  
  47.                  //create and apply the matrix
  48.                  my_matrix=matrix_build(trans_x,trans_y,trans_z,rot_x,rot_y,rot_z,scale,scale,scale);
  49.                  matrix_set(matrix_world, my_matrix);
  50.                  
  51.                  //fetch a single vertex after matrix transformations
  52.                  rotation_xyz_array=d3d_transform_vertex(_x, _y, _z);
  53.                  
  54.                  //add the pulled data to the buffer with retrieved information
  55.                 vertex_position_3d(my_buff, rotation_xyz_array[0], rotation_xyz_array[1], rotation_xyz_array[2]);
  56.                 vertex_normal(my_buff,_nx, _ny,_nz);
  57.                 vertex_texcoord(my_buff, _uvx, _uvy);
  58.                 vertex_colour(my_buff,_col,_alph);
  59.                
  60.                  file_text_readln(file);
  61.                
  62.                  break;
  63.                  
  64.                 // just because....
  65.                 default: show_debug_message("model format incorrect") break;
  66.                  i+=1;
  67.                  break;
  68.                 }                
  69.         }      
  70. file_text_close(file);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement