Advertisement
nyapoleon_legionary

Render_JR_205

May 27th, 2023 (edited)
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var renderClass = "jp.ngt.rtm.render.VehiclePartsRenderer";
  2. importPackage(Packages.org.lwjgl.opengl);
  3. importPackage(Packages.jp.ngt.rtm.render);
  4. importPackage(Packages.jp.ngt.ngtlib.math);
  5.  
  6.  
  7.  
  8. //##### オブジェクト定義 ####################
  9. function init(par1, par2)
  10. {
  11.     //車体
  12.     body = renderer.registerParts(new Parts("100","59.5","59.5mx","80mx","80","45mx","65mx","30"));
  13.     lightF = renderer.registerParts(new Parts("lightF"));
  14.     lightB = renderer.registerParts(new Parts("lightB"));
  15.     door_LF = renderer.registerParts(new Parts("doorLF"));
  16.     door_RF = renderer.registerParts(new Parts("doorRF"));
  17.     door_LB = renderer.registerParts(new Parts("doorLB"));
  18.     door_RB = renderer.registerParts(new Parts("doorRB"));
  19.    
  20.     //パンタ
  21.     pantabase = renderer.registerParts(new Parts("panta_AB1", "panta_AB2", "panta_A1", "panta_A2", "panta_B1", "panta_B2", "panta_C1", "panta_C2", "panta_D1", "panta_D2"));
  22.     pantaA11 = renderer.registerParts(new Parts("panta_A1_1"));
  23.     pantaA12 = renderer.registerParts(new Parts("panta_A1_2"));
  24.     pantaA13 = renderer.registerParts(new Parts("panta_A1_3"));
  25.     pantaA14 = renderer.registerParts(new Parts("panta_A1_4"));
  26.     pantaA15 = renderer.registerParts(new Parts("panta_A1_5"));
  27.     pantaA21 = renderer.registerParts(new Parts("panta_A2_1"));
  28.     pantaA22 = renderer.registerParts(new Parts("panta_A2_2"));
  29.     pantaA23 = renderer.registerParts(new Parts("panta_A2_3"));
  30.     pantaA24 = renderer.registerParts(new Parts("panta_A2_4"));
  31.     pantaA25 = renderer.registerParts(new Parts("panta_A2_5"));
  32.     pantaB11 = renderer.registerParts(new Parts("panta_B1_1"));
  33.     pantaB12 = renderer.registerParts(new Parts("panta_B1_2"));
  34.     pantaB13 = renderer.registerParts(new Parts("panta_B1_3"));
  35.     pantaB14 = renderer.registerParts(new Parts("panta_B1_4"));
  36.     pantaB15 = renderer.registerParts(new Parts("panta_B1_5"));
  37.     pantaB21 = renderer.registerParts(new Parts("panta_B2_1"));
  38.     pantaB22 = renderer.registerParts(new Parts("panta_B2_2"));
  39.     pantaB23 = renderer.registerParts(new Parts("panta_B2_3"));
  40.     pantaB24 = renderer.registerParts(new Parts("panta_B2_4"));
  41.     pantaB25 = renderer.registerParts(new Parts("panta_B2_5"));
  42.     pantaC11 = renderer.registerParts(new Parts("panta_C1_1"));
  43.     pantaC12 = renderer.registerParts(new Parts("panta_C1_2"));
  44.     pantaC13 = renderer.registerParts(new Parts("panta_C1_3"));
  45.     pantaC14 = renderer.registerParts(new Parts("panta_C1_4"));
  46.     pantaC15 = renderer.registerParts(new Parts("panta_C1_5"));
  47.     pantaC21 = renderer.registerParts(new Parts("panta_C2_1"));
  48.     pantaC22 = renderer.registerParts(new Parts("panta_C2_2"));
  49.     pantaC23 = renderer.registerParts(new Parts("panta_C2_3"));
  50.     pantaC24 = renderer.registerParts(new Parts("panta_C2_4"));
  51.     pantaC25 = renderer.registerParts(new Parts("panta_C2_5"));
  52.     pantaD11 = renderer.registerParts(new Parts("panta_D1_1"));
  53.     pantaD12 = renderer.registerParts(new Parts("panta_D1_2"));
  54.     pantaD13 = renderer.registerParts(new Parts("panta_D1_3"));
  55.     pantaD14 = renderer.registerParts(new Parts("panta_D1_4"));
  56.     pantaD15 = renderer.registerParts(new Parts("panta_D1_5"));
  57.     pantaD21 = renderer.registerParts(new Parts("panta_D2_1"));
  58.     pantaD22 = renderer.registerParts(new Parts("panta_D2_2"));
  59.     pantaD23 = renderer.registerParts(new Parts("panta_D2_3"));
  60.     pantaD24 = renderer.registerParts(new Parts("panta_D2_4"));
  61.     pantaD25 = renderer.registerParts(new Parts("panta_D2_5"));
  62. }
  63.  
  64.  
  65.  
  66. //##### render ####################
  67. function render(entity, pass, par3)
  68. {
  69.     //数値設定
  70.     var doorMove = 0.64, //ドア開閉距離(m)
  71.         pantaDistance = 7.0, //パンタ中心の前後位置(m)
  72.         pantaType = "Compatible"; //パンタ高(Normal:標準-格納 / W51:W51-格納 / Compatible:標準-W51)
  73.    
  74.     GL11.glPushMatrix();
  75.    
  76.     //通常描画
  77.     if(pass == 0){
  78.         body.render(renderer);
  79.         render_door(entity, doorMove);
  80.         render_light(entity);
  81.         render_panta(entity, pantaDistance, pantaType);
  82.     }
  83.    
  84.     //半透明描画
  85.     if(pass == 1){
  86.         body.render(renderer);
  87.         render_door(entity, doorMove);
  88.     }
  89.    
  90.     //発光部描画
  91.     if(pass > 1){
  92.         body.render(renderer);
  93.         render_light(entity);
  94.         render_door(entity, doorMove);
  95.     }
  96.    
  97.     GL11.glPopMatrix();
  98. }
  99.  
  100. //##### render_ライト ####################
  101. function render_light(entity){
  102.    
  103.     var lightMove = 0;
  104.    
  105.     try{
  106.         lightMove = (entity.seatRotation)/ 45;
  107.     }catch(e){}
  108.    
  109.  
  110.      if(lightMove < 0){
  111.       GL11.glPushMatrix();
  112.       lightF.render(renderer);
  113.       GL11.glPopMatrix();
  114.      }else{
  115.       GL11.glPushMatrix();
  116.       lightB.render(renderer);
  117.       GL11.glPopMatrix();
  118.      }
  119.  
  120. }
  121.  
  122.  
  123. //##### render_ドア ####################
  124. function render_door(entity,doorMove){
  125.    
  126.     var doorMoveL = 0.0,
  127.         doorMoveR = 0.0;
  128.    
  129.     try{
  130.         doorMoveL = renderer.sigmoid(entity.doorMoveL / 60) * doorMove;
  131.         doorMoveR = renderer.sigmoid(entity.doorMoveR / 60) * doorMove;
  132.     }catch(e){}
  133.    
  134.     GL11.glPushMatrix();
  135.     GL11.glTranslatef(0.0, 0.0, doorMoveL);
  136.     door_LF.render(renderer);
  137.     GL11.glPopMatrix();
  138.    
  139.     GL11.glPushMatrix();
  140.     GL11.glTranslatef(0.0, 0.0, -doorMoveL);
  141.     door_LB.render(renderer);
  142.     GL11.glPopMatrix();
  143.    
  144.     GL11.glPushMatrix();
  145.     GL11.glTranslatef(0.0, 0.0, doorMoveR);
  146.     door_RF.render(renderer);
  147.     GL11.glPopMatrix();
  148.    
  149.     GL11.glPushMatrix();
  150.     GL11.glTranslatef(0.0, 0.0, -doorMoveR);
  151.     door_RB.render(renderer);
  152.     GL11.glPopMatrix();
  153. }
  154.  
  155.  
  156.  
  157. //##### render_パンタ ####################
  158. function render_panta(entity,pantaDistance,pantaType){
  159.    
  160.     var pantaState = 0.0,
  161.         pDis = pantaDistance;
  162.    
  163.     try{
  164.         pantaState = renderer.sigmoid(entity.pantograph_F / 40);
  165.     }catch(e){}
  166.    
  167.     switch(pantaType){
  168.         case "W51" :
  169.             var pAro1 = pantaState * 18 + 15,
  170.                 pAro2 = pantaState * 37 + 26,
  171.                 pBro1 = pantaState * 15 + 12,
  172.                 pBro2 = pantaState * 39 + 27,
  173.                 pCro1 = pantaState * 15 + 14,
  174.                 pCro2 = pantaState * 35 + 24,
  175.                 pCro4 = pantaState * 36 + 24,
  176.                 pCro5 = pantaState * 38 + 28;
  177.             break;
  178.         case "Compatible" :
  179.             var pAro1 = pantaState * 15,
  180.                 pAro2 = pantaState * 26,
  181.                 pBro1 = pantaState * 12,
  182.                 pBro2 = pantaState * 27,
  183.                 pCro1 = pantaState * 14,
  184.                 pCro2 = pantaState * 24,
  185.                 pCro4 = pantaState * 24,
  186.                 pCro5 = pantaState * 28;
  187.             break;
  188.         default :
  189.             var pAro1 = pantaState * 33,
  190.                 pAro2 = pantaState * 63,
  191.                 pBro1 = pantaState * 27,
  192.                 pBro2 = pantaState * 66,
  193.                 pCro1 = pantaState * 29,
  194.                 pCro2 = pantaState * 59,
  195.                 pCro4 = pantaState * 60,
  196.                 pCro5 = pantaState * 66;
  197.             break;
  198.     }
  199.    
  200.     pantabase.render(renderer);
  201.    
  202.     //パンタA1
  203.     GL11.glPushMatrix();
  204.     renderer.rotate(pAro1, 'X', 0.0, 2.8784, pDis+0.5224);
  205.     pantaA11.render(renderer);
  206.         renderer.rotate(-pAro2, 'X', 0.0, 3.6729, pDis+1.5431);
  207.         pantaA12.render(renderer);
  208.             renderer.rotate(pAro2-pAro1, 'X', 0.0, 4.6101, pDis+0.0935);
  209.             pantaA13.render(renderer);
  210.     GL11.glPopMatrix();
  211.     GL11.glPushMatrix();
  212.     renderer.rotate(-pAro1, 'X', 0.0, 2.8784, pDis-0.5224);
  213.     pantaA14.render(renderer);
  214.         renderer.rotate(pAro2, 'X', 0.0, 3.6729, pDis-1.5431);
  215.         pantaA15.render(renderer);
  216.     GL11.glPopMatrix();
  217.    
  218.     //パンタA2
  219.     GL11.glPushMatrix();
  220.     renderer.rotate(pAro1, 'X', 0.0, 2.8784, -pDis+0.5224);
  221.     pantaA21.render(renderer);
  222.         renderer.rotate(-pAro2, 'X', 0.0, 3.6729, -pDis+1.5431);
  223.         pantaA22.render(renderer);
  224.             renderer.rotate(pAro2-pAro1, 'X', 0.0, 4.6101, -pDis+0.0935);
  225.             pantaA23.render(renderer);
  226.     GL11.glPopMatrix();
  227.     GL11.glPushMatrix();
  228.     renderer.rotate(-pAro1, 'X', 0.0, 2.8784, -pDis-0.5224);
  229.     pantaA24.render(renderer);
  230.         renderer.rotate(pAro2, 'X', 0.0, 3.6729, -pDis-1.5431);
  231.         pantaA25.render(renderer);
  232.     GL11.glPopMatrix();
  233.    
  234.     //パンタB1
  235.     GL11.glPushMatrix();
  236.     renderer.rotate(pBro1, 'X', 0.0, 2.8784, pDis-0.5224);
  237.     pantaB11.render(renderer);
  238.         renderer.rotate(-pBro2, 'X', 0.0, 3.8526, pDis+0.93);
  239.         pantaB12.render(renderer);
  240.             renderer.rotate(pBro2-pBro1, 'X', 0.0, 4.6227, pDis+0.0229);
  241.             pantaB13.render(renderer);
  242.     GL11.glPopMatrix();
  243.     GL11.glPushMatrix();
  244.     renderer.rotate(-pBro1, 'X', 0.0, 2.8784, pDis+0.5224);
  245.     pantaB14.render(renderer);
  246.         renderer.rotate(pBro2, 'X', 0.0, 3.8526, pDis-0.93);
  247.         pantaB15.render(renderer);
  248.     GL11.glPopMatrix();
  249.    
  250.     //パンタB2
  251.     GL11.glPushMatrix();
  252.     renderer.rotate(pBro1, 'X', 0.0, 2.8784, -pDis-0.5224);
  253.     pantaB21.render(renderer);
  254.         renderer.rotate(-pBro2, 'X', 0.0, 3.8526, -pDis+0.93);
  255.         pantaB22.render(renderer);
  256.             renderer.rotate(pBro2-pBro1, 'X', 0.0, 4.6227, -pDis+0.0229);
  257.             pantaB23.render(renderer);
  258.     GL11.glPopMatrix();
  259.     GL11.glPushMatrix();
  260.     renderer.rotate(-pBro1, 'X', 0.0, 2.8784, -pDis+0.5224);
  261.     pantaB24.render(renderer);
  262.         renderer.rotate(pBro2, 'X', 0.0, 3.8526, -pDis-0.93);
  263.         pantaB25.render(renderer);
  264.     GL11.glPopMatrix();
  265.    
  266.     //パンタC1
  267.     GL11.glPushMatrix();
  268.     renderer.rotate(pCro1, 'X', 0.0, 3.0118, pDis-0.314);
  269.     pantaC11.render(renderer);
  270.             GL11.glPushMatrix();
  271.             renderer.rotate(-pCro4, 'X', 0.0, 3.6084, pDis+0.7523);
  272.             pantaC14.render(renderer);
  273.             GL11.glPopMatrix();
  274.         renderer.rotate(-pCro2, 'X', 0.0, 3.7151, pDis+0.8641);
  275.         pantaC12.render(renderer);
  276.             GL11.glPushMatrix();
  277.             renderer.rotate(pCro2-pCro1, 'X', 0.0, 4.5998, pDis-0.6186);
  278.             pantaC13.render(renderer);
  279.             GL11.glPopMatrix();
  280.             renderer.rotate(pCro5, 'X', 0.0, 3.5258, pDis+0.9758);
  281.             pantaC15.render(renderer);
  282.     GL11.glPopMatrix();
  283.    
  284.     //パンタC2
  285.     GL11.glPushMatrix();
  286.     renderer.rotate(pCro1, 'X', 0.0, 3.0118, -pDis-0.314);
  287.     pantaC21.render(renderer);
  288.             GL11.glPushMatrix();
  289.             renderer.rotate(-pCro4, 'X', 0.0, 3.6084, -pDis+0.7523);
  290.             pantaC24.render(renderer);
  291.             GL11.glPopMatrix();
  292.         renderer.rotate(-pCro2, 'X', 0.0, 3.7151, -pDis+0.8641);
  293.         pantaC22.render(renderer);
  294.             GL11.glPushMatrix();
  295.             renderer.rotate(pCro2-pCro1, 'X', 0.0, 4.5998, -pDis-0.6186);
  296.             pantaC23.render(renderer);
  297.             GL11.glPopMatrix();
  298.             renderer.rotate(pCro5, 'X', 0.0, 3.5258, -pDis+0.9758);
  299.             pantaC25.render(renderer);
  300.     GL11.glPopMatrix();
  301.    
  302.     //パンタD1
  303.     GL11.glPushMatrix();
  304.     renderer.rotate(-pCro1, 'X', 0.0, 3.0118, pDis+0.3140);
  305.     pantaD11.render(renderer);
  306.             GL11.glPushMatrix();
  307.             renderer.rotate(pCro4, 'X', 0.0, 3.6084, pDis-0.7523);
  308.             pantaD14.render(renderer);
  309.             GL11.glPopMatrix();
  310.         renderer.rotate(pCro2, 'X', 0.0, 3.7151, pDis-0.8641);
  311.         pantaD12.render(renderer);
  312.             GL11.glPushMatrix();
  313.             renderer.rotate(-pCro2+pCro1, 'X', 0.0, 4.5998, pDis+0.6186);
  314.             pantaD13.render(renderer);
  315.             GL11.glPopMatrix();
  316.             renderer.rotate(-pCro5, 'X', 0.0, 3.5258, pDis-0.9758);
  317.             pantaD15.render(renderer);
  318.     GL11.glPopMatrix();
  319.    
  320.     //パンタD2
  321.     GL11.glPushMatrix();
  322.     renderer.rotate(-pCro1, 'X', 0.0, 3.0118, -pDis+0.314);
  323.     pantaD21.render(renderer);
  324.             GL11.glPushMatrix();
  325.             renderer.rotate(pCro4, 'X', 0.0, 3.6084, -pDis-0.7523);
  326.             pantaD24.render(renderer);
  327.             GL11.glPopMatrix();
  328.         renderer.rotate(pCro2, 'X', 0.0, 3.7151, -pDis-0.8641);
  329.         pantaD22.render(renderer);
  330.             GL11.glPushMatrix();
  331.             renderer.rotate(-pCro2+pCro1, 'X', 0.0, 4.5998, -pDis+0.6186);
  332.             pantaD23.render(renderer);
  333.             GL11.glPopMatrix();
  334.             renderer.rotate(-pCro5, 'X', 0.0, 3.5258, -pDis-0.9758);
  335.             pantaD25.render(renderer);
  336.     GL11.glPopMatrix();
  337. }
  338.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement