Exemplo n.º 1
0
        public void Initialize()
        {
            usingLegacyUVType = uvType == UVType.Legacy || uvType == UVType.LegacyContinuous;
            mainCamera        = Camera.main;
            mainCameraTr      = mainCamera.transform;
            comparer          = new SortingClass();

            quadMesh         = ((GameObject)Resources.Load("planeMesh")).GetComponent <MeshFilter>().sharedMesh;
            quadMeshVertices = quadMesh.vertices;

            if (!floatingOrigin)
            {
                floatingOrigin = GetComponent <FloatingOrigin>();
                if (floatingOrigin)
                {
                    Debug.LogError("Floating Origin found but not defined on planet! Make sure to define floating origin on each planet.");
                }
            }
            heightInv         = 1f / heightScale;
            rotation          = transform.rotation.ToQuaterniond();
            oldPlanetPosition = transform.position;
            oldPlanetRotation = rotation;

            if (useBiomeMap)
            {
                biomeMap = new Heightmap(biomeMapTexture, true);
            }

            if (mode == Mode.Noise || mode == Mode.Hybrid) //Deserializing Noise Module
            {
                MemoryStream stream = new MemoryStream(noiseSerialized.bytes);
                noise = Utils.DeserializeModule(stream);
            }

            quadGO = ((GameObject)Resources.Load("plane")); //Original renderQuad

            if (generateDetails && grassMaterial)
            {
                ((GameObject)Resources.Load("Grass")).GetComponent <MeshRenderer>().material = grassMaterial;
            }

            if (mode == Mode.Heightmap || mode == Mode.Hybrid)
            {
                heightmap = new Heightmap(heightmapSizeX, heightmapSizeY, heightmap16bit, useBicubicInterpolation, heightmapTextAsset);
            }

            radiusMaxSqr      = radius * (heightInv + 1) / heightInv; //Squared values so sqrt is not required
            radiusMaxSqr     *= radiusMaxSqr;
            radiusSqr         = radius * radius;
            rqdtSqr           = recomputeQuadDistancesThreshold * recomputeQuadDistancesThreshold;
            scaledSpaceDisSqr = scaledSpaceDistance * scaledSpaceDistance;
            dtDisSqr          = detailDistance * detailDistance;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Generates grayscale previw of noise module
        /// </summary>
        public static Heightmap GeneratePreviewHeightmap(Module module, int resX = 256, int resY = 256)
        {
            Heightmap preview = new Heightmap(resX, resY, false, false);

            for (int x = 0; x < resX; x++)
            {
                for (int y = 0; y < resY; y++)
                {
                    float v = (module.GetNoise(x / (float)resX, y / (float)resY, 0f) + 1f) / 2f;
                    v = Mathf.Clamp01(v);
                    preview.SetPixel(x, y, v);
                }
            }

            return(preview);
        }
Exemplo n.º 3
0
 public void Reset()
 {
     noise     = null;
     heightmap = null;
 }