Advertisement
Guest User

Untitled

a guest
Aug 30th, 2014
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.33 KB | None | 0 0
  1. //-----------------------------------------------------------------
  2. //  Copyright 2014 Justin Lueders and Fervent Interactive
  3. //  All rights reserved
  4. //-----------------------------------------------------------------
  5.  
  6. using System;
  7. using FI.Framework.IoCFramework.Attributes;
  8. using FI.Framework.Messaging.Messages;
  9. using FI.Interfaces.Grout;
  10. using UnityEngine;
  11. namespace FI.Grout
  12. {
  13.     public class CustomPerlinDataLoader:ITerrainDataLoader
  14.     {
  15.         /*None = 0, Rock = 1, Forest = 2, Marsh = 3, Sand = 4, Water = 5 , Paver = 6*/
  16.  
  17.         [Dependency]
  18.         public ITerrainParameterProvider TerrainParameterProvider { get; set; }
  19.  
  20.         private Vector2 _shift;
  21.         private float _zoom;
  22.         private Func<float, int> PerlinValueConversionFunc;
  23.  
  24.         public CustomPerlinDataLoader()
  25.         {
  26.             PerlinDataLoaderConfigMessage.Register(this, PerlinDataLoaderSettingsMessageHandler);
  27.         }
  28.  
  29.         private void PerlinDataLoaderSettingsMessageHandler(PerlinDataLoaderConfigMessage obj)
  30.         {
  31.             _shift = obj.Shift;
  32.             _zoom = obj.Zoom;
  33.  
  34.             PerlinValueConversionFunc = obj.PerlinValueConversionFunc;
  35.         }
  36.  
  37.  
  38.         public int[] LoadTerrainData(int chunkX, int chunkY, int chunkLayer)
  39.         {
  40.             var mapSize = TerrainParameterProvider.TerrainChunkSize;
  41.             var map = new int[mapSize * mapSize];
  42.  
  43.             var xoff = chunkX*mapSize;
  44.             var yoff = chunkY*mapSize;
  45.  
  46.             var xCounter = 0;
  47.             var yCounter = 0;
  48.  
  49.             for (var y = yoff; y < yoff + mapSize; y++)
  50.             {
  51.                 for (var x = xoff; x < xoff + mapSize; x++)
  52.                 {
  53.                     var pos = _zoom*(new Vector2(x, y)) + _shift;
  54.                     //NewPerlin2 perlin2 = new NewPerlin2();
  55.                     float noise = 0.2f;
  56.                     //Debug.Log(perlin2.newNoise(pos.x,pos.y, 3));
  57.                     if (PerlinValueConversionFunc == null)
  58.                     {
  59.                         Debug.LogError("No conversion function given to the perlin data loader.");
  60.                         continue;
  61.                     }
  62.                     var val = PerlinValueConversionFunc(noise);
  63.                     map[(yCounter*mapSize) + xCounter] = val;
  64.                     xCounter++;
  65.                 }
  66.                 yCounter++;
  67.                 xCounter = 0;
  68.             }
  69.  
  70.             return map;
  71.         }
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement