Beispiel #1
0
		void GenerateBigTrees( VoxelSector Sector )
		{
			int x, z, xs, ys, zs, GenerationRadius;
			VoxelGfx_Tree TreeMaker = new VoxelGfx_Tree();
			VoxelGfx_Tree_Straight TreeMaker_2 = new VoxelGfx_Tree_Straight();
			VoxelGfx_Tree_Giant TreeMaker_3 = new VoxelGfx_Tree_Giant();
			//int Seed;
			ushort ZoneType = 0;
			uint RandNum, TreeType;
			bool ZoneOk;

			xs = Sector.Pos_x << VoxelSector.ZVOXELBLOCSHIFT_X;
			ys = Sector.Pos_y << VoxelSector.ZVOXELBLOCSHIFT_Y;
			zs = Sector.Pos_z << VoxelSector.ZVOXELBLOCSHIFT_Z;
			//Seed = xs + 3524*ys + 234 * zs;

			/*
			  Sector.SetCube(0,20,0, 2);
			  Sector.SetCube(15,20,15, 2);
			  return;
			*/
			GenerationRadius = 150;
			RandomGen.Reset();
			random_seed[2] = 0;
			random_seed[3] = 0;
			for( x = xs - GenerationRadius; x < xs + GenerationRadius; x++ )
				for( z = zs - GenerationRadius; z < zs + GenerationRadius; z++ )
				{
					random_seed[0] = x;
					random_seed[1] = z;
					RandNum = (uint)RandomGen.GetEntropy( 10, false );
					if( RandNum < 10 )
					{
						ZVector3f Position;
						Position.x = x - xs;
						Position.z = z - zs;
						Position.y = GetZoneHeight( x, z, ZoneType ) - ys;
						TreeMaker.Seed = (uint)( Math.Abs( x ) * 3 + ( ( Math.Abs( z ) << 9 ) * 5 ) );
						TreeMaker_2.Seed = TreeMaker.Seed;
						TreeType = RandNum & 7;

						ZoneOk = ( ZoneType == 5 );
						switch( TreeType )
						{
							case 0:
							case 1:
							case 2:
								if( Position.y > -128 && Position.y < 64 && ZoneOk ) TreeMaker.DrawTree( Sector, ref Position );
								break;

							case 3:
							case 4:
							case 5:
							case 6:
								if( Position.y > -192 && Position.y < 64 && ZoneOk ) TreeMaker_2.DrawTree( Sector, ref Position );
								break;
							case 7:
								if( Position.y > -1024 && Position.y < 64 && ZoneOk ) TreeMaker_3.DrawTree( Sector, ref Position );
								break;
						}
					}
				}
		}
Beispiel #2
0
		void Generate_Generic_LittleStructs( VoxelSector Sector, VoxelSector ObjectToPlace, GenericCharCanvas LocationMap, int Offset )
		{
			int x, z, xs, ys, zs, GenerationRadius;
			//ZLightSpeedRandom Random;
			VoxelGfx_Tree TreeMaker = new VoxelGfx_Tree();
			//int Seed;
			ushort ZoneType= 0 ;
			// uint RandNum;


			xs = Sector.Pos_x << VoxelSector.ZVOXELBLOCSHIFT_X;
			ys = Sector.Pos_y << VoxelSector.ZVOXELBLOCSHIFT_Y;
			zs = Sector.Pos_z << VoxelSector.ZVOXELBLOCSHIFT_Z;
			//Seed = xs + 3524*ys + 234 * zs;

			/*
			  Sector.SetCube(0,20,0, 2);
			  Sector.SetCube(15,20,15, 2);
			  return;
			*/

			uint SizeMask;

			SizeMask = (uint)( LocationMap.Width - 1 );
			GenerationRadius = 5;

			for( x = xs - GenerationRadius; x < ( xs + 16 + GenerationRadius ); x++ )
				for( z = zs - GenerationRadius; z < ( zs + 16 + GenerationRadius ); z++ )
				{
					//if ((RandNum = Random.GetNumber( abs(x) + ( abs(z) << 8 ) )) < (4194304 * 50)) // 6
					// if ( (((x & 7) == 0) && ((z & 7) == 0)) )

					if( LocationMap.GetPoint_Fast( (int)(SizeMask - ( ( x + Offset ) & SizeMask )), (int)(( z + Offset ) & SizeMask) ) > 128 )
					{

						ZVector3L Position;
						ZVector3L OffsetRec;

						Position.x = x - xs;
						Position.z = z - zs;
						Position.y = GetZoneHeight( x, z, ZoneType ) - ys;

						OffsetRec.x = Position.x;
						OffsetRec.y = Position.y;
						OffsetRec.z = Position.z;

						OffsetRec.x -= T3dTemplate_1.Handle_x;
						OffsetRec.y -= T3dTemplate_1.Handle_y;
						OffsetRec.z -= T3dTemplate_1.Handle_z;

						if( OffsetRec.y < 74 && OffsetRec.y > -10 )
						{
							// if ( (x== (75-512)) && (z==(103-512)) ) MANUAL_BREAKPOINT;
							// if (this.Canva_4.GetPoint_Secure(xs & 0xFF,zs & 0xFF))
							Sector.BlitSector( ObjectToPlace, ref OffsetRec );
						}
					}
				}
		}
Beispiel #3
0
		void GenerateBigTrees( VoxelSector Sector )
		{
			int x, z, xs, ys, zs, GenerationRadius;
			VoxelGfx_Tree TreeMaker = new VoxelGfx_Tree();
			VoxelGfx_Tree_Straight TreeMaker_2 = new VoxelGfx_Tree_Straight();
			VoxelGfx_Tree_Giant TreeMaker_3 = new VoxelGfx_Tree_Giant();
			LightSpeedRandom Random = new LightSpeedRandom();
			//int Seed;
			ushort ZoneType = 0;
			uint RandNum, TreeType;
			bool ZoneOk;

			xs = Sector.Pos_x << VoxelSector.ZVOXELBLOCSHIFT_X;
			ys = Sector.Pos_y << VoxelSector.ZVOXELBLOCSHIFT_Y;
			zs = Sector.Pos_z << VoxelSector.ZVOXELBLOCSHIFT_Z;
			//Seed = xs + 3524*ys + 234 * zs;

			/*
			  Sector.SetCube(0,20,0, 2);
			  Sector.SetCube(15,20,15, 2);
			  return;
			*/

			GenerationRadius = 150;
			for( x = xs - GenerationRadius; x < xs + GenerationRadius; x++ )
				for( z = zs - GenerationRadius; z < zs + GenerationRadius; z++ )
				{
					if( ( RandNum = Random.GetNumber( (uint)(Math.Abs( x ) + ( Math.Abs( z ) << 8 ) )) ) < ( 4194304 / 3 ) ) // 6
					{
						ZVector3f Position;
						Position.x = x - xs;
						Position.z = z - zs;
						Position.y = GetZoneHeight( x, z, out ZoneType ) - ys;
						TreeMaker.Seed = (uint)( Math.Abs( x ) * 3 + ( ( Math.Abs( z ) << 9 ) * 5 ) );
						TreeMaker_2.Seed = TreeMaker.Seed;
						TreeType = RandNum & 7;

						ZoneOk = ( ZoneType == 5 );
						switch( TreeType )
						{
							case 0:
							case 1:
							case 2:
								if( Position.y > -128 && Position.y < 64 && ZoneOk ) TreeMaker.DrawTree( Sector, ref Position );
								break;

							case 3:
							case 4:
							case 5:
							case 6:
								if( Position.y > -192 && Position.y < 64 && ZoneOk ) TreeMaker_2.DrawTree( Sector, ref Position );
								break;
							case 7:
								if( Position.y > -1024 && Position.y < 64 && ZoneOk ) TreeMaker_3.DrawTree( Sector, ref Position );
								break;
						}
					}
				}
		}