예제 #1
0
    void GenerateAtmosphere()
    {
        if (atmosphereCreated)
        {
            DestroyImmediate(Atmosphere);
        }
        atmosphereCreated             = true;
        Atmosphere                    = GameObject.CreatePrimitive(PrimitiveType.Sphere);
        Atmosphere.transform.position = meshFilters[0].transform.position;
        Atmosphere.name               = "Atmosphere";
        Atmosphere.transform.parent   = transform;
        float multiplier = 1 / shapeGenerator.planetRadius;

        Atmosphere.transform.localScale = new Vector3(multiplier * atmosphereLevel, multiplier * atmosphereLevel, multiplier * atmosphereLevel);
        atmosphereNoiseFilter           = Atmosphere.AddComponent <SimpleNoiseFilter>();
        atmosphereNoiseFilter.centre.x  = 0.1f;
        atmosphereNoiseFilter.centre.y  = 0.1f;
        atmosphereNoiseFilter.centre.z  = 0.1f;

        Atmosphere.GetComponent <MeshRenderer>().sharedMaterial = atmosphereMaterial;

        CalculateAtmosphere();

        Atmosphere.GetComponent <MeshRenderer>().shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
        Atmosphere.GetComponent <Collider>().enabled = false;
    }
예제 #2
0
    private void Awake()
    {
        noiseFilters = new SimpleNoiseFilter[objectSettings.noiseLayers.Length];
        for (int i = 0; i < noiseFilters.Length; i++)
        {
            noiseFilters[i] = new SimpleNoiseFilter(objectSettings.noiseLayers[i].noiseSettings);
        }

        lastObjectSettings = JsonUtility.ToJson(objectSettings);

        GetComponent <MeshFilter>().mesh   = OctahedronSphereCreator.Create(objectSettings, noiseFilters);;
        GetComponent <Renderer>().material = m_TerrainMaterial;
        texture = new Texture2D(textureResolution, 1);
        updateColours();
        m_TerrainMaterial.SetVector("_elevationMinMax", new Vector4(objectSettings.radius, objectSettings.radius + (0.9f * objectSettings.radius / (objectSettings.radius + objectSettings.radius))));

        noiseFilters = new INoiseFilter[objectSettings.noiseLayers.Length];
        for (int i = 0; i < noiseFilters.Length; i++)
        {
            noiseFilters[i] = NoiseFilterFactory.CreateNoiseFilter(objectSettings.noiseLayers[i].noiseSettings);
        }
        lastObjectSettings = JsonUtility.ToJson(objectSettings);

        mesh = OctahedronSphereCreator.Create(objectSettings, noiseFilters);
        GetComponent <MeshFilter>().mesh = mesh;
        updateColours();
        m_TerrainMaterial.SetVector("_elevationMinMax", new Vector4(objectSettings.radius, objectSettings.radius + (0.9f * objectSettings.radius / (objectSettings.radius + objectSettings.radius))));

        GetComponent <MeshCollider>().sharedMesh = mesh;
    }
    public void Initiliaze()
    {
        Debug.Log("hello");
        noiseFilter0 = gameObject.AddComponent <SimpleNoiseFilter>();

        noiseFilter1 = gameObject.AddComponent <SimpleNoiseFilter>();

        noiseFilter2 = gameObject.AddComponent <RidgidNoiseFilter>();
    }
예제 #4
0
    public ShapeGenerator(ShapeSettings settings)
    {
        this.settings     = settings;
        this.noiseFilters = new SimpleNoiseFilter[settings.noiseLayers.Length];

        for (int i = 0; i < noiseFilters.Length; i++)
        {
            noiseFilters[i] = new SimpleNoiseFilter(settings.noiseLayers[i].noiseSettings);
        }
    }
예제 #5
0
    public void Initialize()
    {
        simpleNoise      = (SimpleNoiseFilter)NoiseFilterFactory.CreateNoiseFilter(terrainSettings.noiseLayers[0].noiseSettings);
        fragmentObjPool  = new FragmentObjectPool(material, transform);
        viewerPosition   = viewer.transform.position;
        visibleFragments = new Dictionary <Vector2, TerrainFragment>();
        for (int i = 0; i < transform.childCount; i++) //destroy editor terrain fragments
        {
            Destroy(transform.GetChild(i).gameObject);
        }

        oldViewerPosition = viewer.transform.position;
        if (viewerPosition == null)
        {
            viewerPosition = viewer.transform.position;
        }

        visibleLastframeFragments = new Dictionary <Vector2, TerrainFragment>();

        setResolutionLevels();

        fragmentVisibleInViewDistance = Mathf.RoundToInt(terrainSettings.maxViewDistance / (float)terrainSettings.fragmentSize);
        GenerateFragements();
    }