森林プラグインに、下草画像を表示できるよう拡張したいと思います。 こんな具合にコードを修正したいのですが・・・ cvs diff ForestVoxel.cs ForestBuilder.cs AssemblyInfo.cs (ディレクトリ C:\Project\FreeTrain\FreeTrain\plugins\org.kohsuke.freetrain.land.forest\src\ 内) Index: ForestVoxel.cs =================================================================== RCS file: /cvsroot/freetrain/FreeTrain/plugins/org.kohsuke.freetrain.land.forest/src/ForestVoxel.cs,v retrieving revision 1.2 diff -u -r1.2 ForestVoxel.cs --- ForestVoxel.cs 2 Feb 2003 15:44:10 -0000 1.2 +++ ForestVoxel.cs 24 Jun 2003 13:25:48 -0000 @@ -33,6 +33,8 @@ public override void draw( DrawContext surface, Point pt, int heightCutDiff ) { + if( contrib.ground != null ) + contrib.ground.draw( surface.surface, pt ); for( int i=0; i<patterns.Length; i+=3 ) contrib.sprites[ patterns[i+2] ].draw( surface.surface, new Point( pt.X+patterns[i+0], pt.Y+patterns[i+1] ) ); Index: ForestBuilder.cs =================================================================== RCS file: /cvsroot/freetrain/FreeTrain/plugins/org.kohsuke.freetrain.land.forest/src/ForestBuilder.cs,v retrieving revision 1.4 diff -u -r1.4 ForestBuilder.cs --- ForestBuilder.cs 27 Mar 2003 01:57:41 -0000 1.4 +++ ForestBuilder.cs 24 Jun 2003 13:25:49 -0000 @@ -36,11 +36,24 @@ sprites = new Sprite[count]; for( int i=0; i<count; i++ ) sprites[i] = spriteFactory.createSprite( picture, offset, new Point(i*size.Width,0), size ); + + // create ground + XmlNode node = e.SelectSingleNode("ground"); + if( node != null ) + { + XmlElement pic = (XmlElement)XmlUtil.selectSingleNode(node,"picture"); + Point origin = XmlUtil.parsePoint( pic.Attributes["origin"].Value ); + picture = getPicture((XmlElement)node); + spriteFactory =SpriteFactory.getSpriteFactory(node); + ground = spriteFactory.createSprite( picture, new Point(0,0), origin, new Size(32,16) ); + } } /// <summary> Sprite of trees. </summary> public readonly Sprite[] sprites; + public readonly Sprite ground; + /// <summary> /// Average density of trees in one voxel. /// </summary> @@ -163,6 +176,8 @@ if( anchor!=UNPLACED && loc.inBetween(anchor,currentLoc) ) { byte[] tree = contrib.createRandomTrees(); + if( contrib.ground != null ) + contrib.ground.draw( canvas.surface, pt ); for( int i=0; i<tree.Length; i+=3 ) contrib.sprites[ tree[i+2] ].draw( canvas.surface, new Point( pt.X+tree[i+0], pt.Y+tree[i+1] ) ); _______________________________________________ FreeTrain-general mailing list FreeTrain-general@lists.sourceforge.jp http://lists.sourceforge.jp/mailman/listinfo/freetrain-general