Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------------------------------
- // Copyright 2014 Justin Lueders and Fervent Interactive
- // All rights reserved
- //-----------------------------------------------------------------
- using System;
- using FI.Framework.IoCFramework.Attributes;
- using FI.Framework.Messaging.Messages;
- using FI.Interfaces.Grout;
- using UnityEngine;
- namespace FI.Grout
- {
- public class CustomPerlinDataLoader:ITerrainDataLoader
- {
- /*None = 0, Rock = 1, Forest = 2, Marsh = 3, Sand = 4, Water = 5 , Paver = 6*/
- [Dependency]
- public ITerrainParameterProvider TerrainParameterProvider { get; set; }
- private Vector2 _shift;
- private float _zoom;
- private Func<float, int> PerlinValueConversionFunc;
- public CustomPerlinDataLoader()
- {
- PerlinDataLoaderConfigMessage.Register(this, PerlinDataLoaderSettingsMessageHandler);
- }
- private void PerlinDataLoaderSettingsMessageHandler(PerlinDataLoaderConfigMessage obj)
- {
- _shift = obj.Shift;
- _zoom = obj.Zoom;
- PerlinValueConversionFunc = obj.PerlinValueConversionFunc;
- }
- public int[] LoadTerrainData(int chunkX, int chunkY, int chunkLayer)
- {
- var mapSize = TerrainParameterProvider.TerrainChunkSize;
- var map = new int[mapSize * mapSize];
- var xoff = chunkX*mapSize;
- var yoff = chunkY*mapSize;
- var xCounter = 0;
- var yCounter = 0;
- for (var y = yoff; y < yoff + mapSize; y++)
- {
- for (var x = xoff; x < xoff + mapSize; x++)
- {
- var pos = _zoom*(new Vector2(x, y)) + _shift;
- //NewPerlin2 perlin2 = new NewPerlin2();
- float noise = 0.2f;
- //Debug.Log(perlin2.newNoise(pos.x,pos.y, 3));
- if (PerlinValueConversionFunc == null)
- {
- Debug.LogError("No conversion function given to the perlin data loader.");
- continue;
- }
- var val = PerlinValueConversionFunc(noise);
- map[(yCounter*mapSize) + xCounter] = val;
- xCounter++;
- }
- yCounter++;
- xCounter = 0;
- }
- return map;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement