22
33import falseresync .vivatech .client .VivatechClient ;
44import falseresync .vivatech .client .rendering .RenderingUtil ;
5- import falseresync .vivatech .client .wire .VivatechWireParameters ;
65import falseresync .vivatech .client .wire .WireParameters ;
6+ import falseresync .vivatech .client .wire .WireRenderingRegistry ;
7+ import falseresync .vivatech .client .wire .WireModel ;
78import net .fabricmc .fabric .api .client .rendering .v1 .WorldRenderContext ;
89import net .fabricmc .fabric .api .client .rendering .v1 .WorldRenderEvents ;
910import net .minecraft .client .render .*;
@@ -30,8 +31,9 @@ public void afterEntities(WorldRenderContext context) {
3031 var cameraPos = context .camera ().getPos ();
3132
3233 for (var wire : wires ) {
33- var parameters = VivatechWireParameters .get (wire );
34- var buffer = parameters .getSprite ().getTextureSpecificVertexConsumer (context .consumers ().getBuffer (RenderLayer .getCutout ()));
34+ var parameters = WireRenderingRegistry .getAndBuild (wire );
35+ var model = parameters .getModel ();
36+ var buffer = model .getSprite ().getTextureSpecificVertexConsumer (context .consumers ().getBuffer (RenderLayer .getCutout ()));
3537
3638 var wireEnd = wire .end ().sub (wire .start (), new Vector3f ());
3739 var light = WorldRenderer .getLightmapCoordinates (context .world (), BlockPos .ofFloored (wire .middle ().x , wire .middle ().y , wire .middle ().z ));
@@ -43,21 +45,19 @@ public void afterEntities(WorldRenderContext context) {
4345
4446 var positionMatrix = matrices .peek ().getPositionMatrix ();
4547 var direction = wireEnd .normalize (new Vector3f ());
46-
47- float length = wireEnd .length ();
48- int segmentCount = (int ) (length / parameters .getSegmentSize ());
48+ int segmentCount = (int ) (wire .length () / model .getSegmentSize ());
4949
5050 if (direction .x == 0 && direction .z == 0 ) {
51- drawVerticalWire (parameters , wireEnd , segmentCount , buffer , positionMatrix , light );
51+ drawVerticalWire (model , wireEnd , segmentCount , buffer , positionMatrix , light );
5252 } else {
53- drawHorizontalWire (parameters , direction , wireEnd , segmentCount , length , buffer , positionMatrix , light );
53+ drawHorizontalWire (parameters , model , direction , wireEnd , segmentCount , wire . length () , buffer , positionMatrix , light );
5454 }
5555
5656 matrices .pop ();
5757 }
5858 }
5959
60- private void drawVerticalWire (WireParameters parameters , Vector3f wireEnd , int segmentCount , VertexConsumer buffer , Matrix4f positionMatrix , int light ) {
60+ private void drawVerticalWire (WireModel parameters , Vector3f wireEnd , int segmentCount , VertexConsumer buffer , Matrix4f positionMatrix , int light ) {
6161 var tangent = new Vector3f (VERTICAL_SEGMENT_NORMAL );
6262 var tangentialHalfSize = tangent .mul (parameters .getSegmentSize () / 2f , new Vector3f ());
6363 var stepY = new Vector3f (0 , wireEnd .y / segmentCount , 0 );
@@ -79,24 +79,24 @@ private void drawVerticalWire(WireParameters parameters, Vector3f wireEnd, int s
7979 }
8080 }
8181
82- private void drawHorizontalWire (WireParameters parameters , Vector3f direction , Vector3f wireEnd , int segmentCount , float length , VertexConsumer buffer , Matrix4f positionMatrix , int light ) {
82+ private void drawHorizontalWire (WireParameters renderableWire , WireModel model , Vector3f direction , Vector3f wireEnd , int segmentCount , float length , VertexConsumer buffer , Matrix4f positionMatrix , int light ) {
8383 var tangent = new Vector3f (direction .x , 0 , direction .z ).normalize (new Vector3f ()).cross (HORIZONTAL_SEGMENT_NORMAL );
84- var tangentialHalfSize = tangent .mul (parameters .getSegmentSize () / 2f , new Vector3f ());
84+ var tangentialHalfSize = tangent .mul (model .getSegmentSize () / 2f , new Vector3f ());
8585
86- var stepXZ = direction .mul (parameters .getSegmentSize (), new Vector3f ());
86+ var stepXZ = direction .mul (model .getSegmentSize (), new Vector3f ());
8787 float stepY = wireEnd .y / segmentCount ;
8888
89- var segmentAVertices = buildInitialSegmentVertices (tangentialHalfSize , new Vector3f (0 , parameters .getSegmentSize () / 2 , 0 ), stepXZ );
90- var segmentBVertices = buildInitialSegmentVertices (tangentialHalfSize , new Vector3f (0 , -parameters .getSegmentSize () / 2 , 0 ), stepXZ );
89+ var segmentAVertices = buildInitialSegmentVertices (tangentialHalfSize , new Vector3f (0 , model .getSegmentSize () / 2 , 0 ), stepXZ );
90+ var segmentBVertices = buildInitialSegmentVertices (tangentialHalfSize , new Vector3f (0 , -model .getSegmentSize () / 2 , 0 ), stepXZ );
9191
92- var startY = parameters .getSaggedY (0 , stepY , length );
92+ var startY = renderableWire .getSaggedY (0 , stepY );
9393 for (int segmentNo = 0 ; segmentNo < segmentCount ; segmentNo ++) {
94- var endY = parameters .getSaggedY (segmentNo + 1 , stepY , length );
95- advanceSegmentVertices (segmentAVertices , stepXZ , startY , endY , parameters .getSegmentSize () / 2 );
96- advanceSegmentVertices (segmentBVertices , stepXZ , startY , endY , -parameters .getSegmentSize () / 2 );
94+ var endY = renderableWire .getSaggedY (segmentNo + 1 , stepY );
95+ advanceSegmentVertices (segmentAVertices , stepXZ , startY , endY , model .getSegmentSize () / 2 );
96+ advanceSegmentVertices (segmentBVertices , stepXZ , startY , endY , -model .getSegmentSize () / 2 );
9797 startY = endY ;
9898
99- var uv = parameters .getUv (segmentNo );
99+ var uv = model .getUv (segmentNo );
100100 drawSegment (buffer , positionMatrix , segmentAVertices , uv , TINT , light , OVERLAY , HORIZONTAL_SEGMENT_NORMAL );
101101 drawSegment (buffer , positionMatrix , segmentBVertices , uv , TINT , light , OVERLAY , HORIZONTAL_SEGMENT_NORMAL );
102102 }
0 commit comments