Skip to content
This repository has been archived by the owner on Mar 15, 2021. It is now read-only.

Commit

Permalink
Add RailCraft 6 custom track rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeprimm committed Dec 11, 2012
1 parent acbccaf commit e6f0c87
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 16 deletions.
27 changes: 15 additions & 12 deletions renderdata/railcraft6-models.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ patch:id=SlopeXUpZTop,Ox=0.0,Oy=0.0,Oz=0.0,Ux=0.0,Uy=0.0,Uz=1.0,Vx=1.0,Vy=1.0,Vz
patch:id=VertX0,Ox=0.0,Oy=0.0,Oz=1.0,Ux=0.0,Uy=0.0,Uz=0.0,Vx=0.0,Vy=1.0,Vz=1.0,visibility=top

# Detector
#customblock:id=block.detector,data=*,class=org.dynmap.hdmap.renderer.RotatedBoxRenderer,textureIndex=direction,index0=0,map0=90,index1=1,map1=180/90/0,index2=2,map2=90/180/0,index3=3,map3=90/0/0,index4=4,map4=90/90/0,index5=5,map5=90/270/0
customblock:id=block.detector,data=*,class=org.dynmap.hdmap.renderer.RotatedBoxRenderer,textureIndex=direction,index0=0,map0=S312045,index1=1,map1=S032145,index2=2,map2=S012435,index3=3,map3=S012543,index4=4,map4=S013245,index5=5,map5=S012345

# block.machine.gamma:2 - Advanced item loader
Expand All @@ -32,17 +31,21 @@ patchblock:id=block.elevator,data=4,data=12,patch0=VertX0@180
# Elevator block - south facing
patchblock:id=block.elevator,data=5,data=13,patch0=VertX0

# Advamced Rails - use same model as rails
patchblock:id=block.track,data=0,patch0=HorizY001ZTop
patchblock:id=block.track,data=1,patch0=HorizY001ZTop@90
patchblock:id=block.track,data=2,patch0=SlopeXUpZTop
patchblock:id=block.track,data=3,patch0=SlopeXUpZTop@180
patchblock:id=block.track,data=4,patch0=SlopeXUpZTop@270
patchblock:id=block.track,data=5,patch0=SlopeXUpZTop@90
patchblock:id=block.track,data=6,patch0=HorizY001ZTop@90
patchblock:id=block.track,data=7,patch0=HorizY001ZTop@180
patchblock:id=block.track,data=8,patch0=HorizY001ZTop@270
patchblock:id=block.track,data=9,patch0=HorizY001ZTop
# Advanced Rails - use same model as rails
customblock:id=block.track,data=0,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=HorizY001ZTop
customblock:id=block.track,data=1,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=HorizY001ZTop@90
customblock:id=block.track,data=2,data=10,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=SlopeXUpZTop
customblock:id=block.track,data=3,data=11,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=SlopeXUpZTop@180
customblock:id=block.track,data=4,data=12,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=SlopeXUpZTop@270
customblock:id=block.track,data=5,data=13,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=SlopeXUpZTop@90
customblock:id=block.track,data=6,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=HorizY001ZTop@90
customblock:id=block.track,data=7,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=HorizY001ZTop@180
customblock:id=block.track,data=8,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=HorizY001ZTop@270
customblock:id=block.track,data=9,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=HorizY001ZTop
customblock:id=block.track,data=10,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=SlopeXUpZTop
customblock:id=block.track,data=11,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=SlopeXUpZTop@180
customblock:id=block.track,data=12,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=SlopeXUpZTop@270
customblock:id=block.track,data=13,class=org.dynmap.hdmap.renderer.RailCraftTrackRenderer,patch=SlopeXUpZTop@90

# Post, Metal Post - set render algorithm
linkmap:id=block.post,id=block.post.metal,linkalg=1
Expand Down
8 changes: 4 additions & 4 deletions renderdata/railcraft6-texture.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ block:id=block.elevator,data=12,patch0=84,transparency=TRANSPARENT,txtid=tracks
block:id=block.elevator,data=13,patch0=84,transparency=TRANSPARENT,txtid=tracks

# Adv Rail - straights
block:id=block.track,data=0,data=1,data=2,data=3,data=4,data=5,patch0=23,transparency=TRANSPARENT,txtid=tracks
# Adv Rails - corners
block:id=block.track,data=6,data=7,data=8,data=9,patch0=7,transparency=TRANSPARENT,txtid=tracks
block:id=block.track,data=0,data=1,data=2,data=3,data=4,data=5,patch0=1,patch1=5,patch2=17,patch3=101,patch4=37,patch5=69,patch6=39,patch7=49,patch8=117,patch9=253,patch10=133,patch11=254,patch12=22,patch13=53,patch14=38,patch15=65,patch16=23,patch17=21,patch18=33,patch19=81,patch20=97,patch21=149,patch22=113,patch23=115,patch24=24,patch25=165,patch26=40,patch27=129,patch28=181,patch29=252,patch30=145,patch31=197,patch32=161,patch33=163,patch34=177,patch35=179,transparency=TRANSPARENT,txtid=tracks
# Adv Rail - corners, powered straights
block:id=block.track,data=6,data=7,data=8,data=9,data=10,data=11,data=12,data=13,patch0=0,patch1=4,patch2=16,patch3=100,patch4=36,patch5=68,patch6=39,patch7=48,patch8=116,patch9=253,patch10=132,patch11=254,patch12=6,patch13=52,patch14=38,patch15=64,patch16=7,patch17=20,patch18=32,patch19=80,patch20=96,patch21=148,patch22=112,patch23=114,patch24=8,patch25=164,patch26=40,patch27=128,patch28=180,patch29=252,patch30=144,patch31=196,patch32=160,patch33=162,patch34=176,patch35=178,transparency=TRANSPARENT,txtid=tracks

# block.machine.alpha:0 - World Anchor
block:id=block.machine.alpha,data=0,face0=185,face1=185,face2=201,face3=201,face4=201,face5=201,txtid=mach
Expand Down Expand Up @@ -125,7 +125,7 @@ block:id=block.machine.gamma,data=8,patch0=106,patch1=106,patch2=107,patch3=108,
block:id=block.machine.gamma,data=9,patch0=231,patch1=231,patch2=232,patch3=233,patch4=232,patch5=232,txtid=mach

# block.cube:0 - World Anchor
block:id=block.cube,data=0,face0=185,face1=185,face2=201,face3=201,face4=201,face5=201,txtid=mech
block:id=block.cube,data=0,face0=185,face1=185,face2=201,face3=201,face4=201,face5=201,txtid=mach
# block.cube:1 - Concrete Block
block:id=block.cube,data=1,allfaces=103,txtid=blk0
# block.cube:2 - Steel Block
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package org.dynmap.hdmap.renderer;

import java.util.Map;

import org.dynmap.Log;
import org.dynmap.renderer.CustomRenderer;
import org.dynmap.renderer.MapDataContext;
import org.dynmap.renderer.RenderPatch;
import org.dynmap.renderer.RenderPatchFactory;

public class RailCraftTrackRenderer extends CustomRenderer {
private String[] tileEntityAttribs = { "trackId" };

private RenderPatch[][] basepatches;

private int maxTrackId;

@Override
public boolean initializeRenderer(RenderPatchFactory rpf, int blkid, int blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkid, blockdatamask, custparm))
return false;

String cnt = custparm.get("maxTrackId"); // How many defined track IDs
if(cnt != null) {
maxTrackId = Integer.parseInt(cnt);
}
else {
maxTrackId = 36;
}
String patchid = custparm.get("patch");
if(patchid == null) {
Log.severe("Missing patch ID");
return false;
}
basepatches = new RenderPatch[maxTrackId+1][];
basepatches[0] = new RenderPatch[] { rpf.getNamedPatch(patchid, 0) };
if(basepatches[0][0] == null) {
Log.severe("Error getting patch : " + patchid);
return false;
}
for(int i = 1; i <= maxTrackId; i++) {
basepatches[i] = new RenderPatch[] { rpf.getRotatedPatch(basepatches[0][0], 0, 0, 0, i) };
}

return true;
}

@Override
public int getMaximumTextureCount() {
return maxTrackId;
}

@Override
public String[] getTileEntityFieldsNeeded() {
return tileEntityAttribs;
}

@Override
public RenderPatch[] getRenderPatchList(MapDataContext ctx) {
int trackId = 0;
Object idxv = ctx.getBlockTileEntityField("trackId");
if(idxv instanceof Number) {
trackId = ((Number)idxv).intValue();
}
/* Clamp track ID */
if(trackId > maxTrackId) {
trackId = 0;
}
/* Return patch */
return basepatches[trackId];
}
}

0 comments on commit e6f0c87

Please sign in to comment.