void OnSceneGUI()
    {
        if (!target)
            target = (TerrainTransparency)base.target;

        // if auto-update is enabled, and used-event (e.g. mouse down/move/up, while painting) occurred with our target-terrain selected
        if (target.autoUpdateTransparencyMap && Event.current.rawType == EventType.used && Event.current.button == 0 && Selection.transforms.Any(a=>a.gameObject == target.gameObject)) //Selection.activeTransform.gameObject == target.gameObject)
            targetLastMouseChangeTimes[target] = Time.realtimeSinceStartup;
    }
Beispiel #2
0
    void OnSceneGUI()
    {
        if (!target)
        {
            target = (TerrainTransparency)base.target;
        }

        // if auto-update is enabled, and used-event (e.g. mouse down/move/up, while painting) occurred with our target-terrain selected
        if (target.autoUpdateTransparencyMap && Event.current.rawType == EventType.used && Event.current.button == 0 && Selection.transforms.Any(a => a.gameObject == target.gameObject))       //Selection.activeTransform.gameObject == target.gameObject)
        {
            targetLastMouseChangeTimes[target] = Time.realtimeSinceStartup;
        }
    }
Beispiel #3
0
    float GetOpacityAt(Vector3 position, TerrainData terrainData, TerrainTransparency terrainTransparencySettings)
    {
        var currentLocationOnTerrainAlphaMap = new Vector2((terrainData.alphamapResolution / terrainData.size.x) * position.x, (terrainData.alphamapResolution / terrainData.size.z) * position.z);

        var aPos = (int)currentLocationOnTerrainAlphaMap.y;     // for some reason we need to flip them
        var bPos = (int)currentLocationOnTerrainAlphaMap.x;

        if (aPos >= 0 && aPos < terrainData.alphamapResolution && bPos >= 0 && bPos < terrainData.alphamapResolution) // if in-bounds
        {
            float opacity      = terrainTransparencySettings.opacityMap.GetPixel(bPos, aPos).a;                       //terrainAlphamaps[aPos, bPos, slotIndex];
            float finalOpacity = opacity > terrainTransparencySettings.alphaCutoff ? 1 : 0;
            return(finalOpacity);
        }

        return(1);        // if no texture detected underneath, assume we're on solid/opaque terrain
    }
    public override void OnInspectorGUI()
    {
        if (!target)
            target = (TerrainTransparency)base.target;

        bool changeMade = DrawDefaultInspector();
        if (GUILayout.Button("Update Transparency Map"))
        {
            target.UpdateTransparencyMap();
            target.ApplyTransparencyMap();
        }

        // if auto-update is enabled, and just-drawn inspector made changes or an undo/redo has occurred
        if (target.autoUpdateTransparencyMap && (changeMade || (new[] {EventType.ValidateCommand, EventType.Used}.Contains(Event.current.type) && Event.current.commandName == "UndoRedoPerformed")))
            target.UpdateTransparencyMap();
    }
    float GetOpacityAt(Vector3 position, TerrainData terrainData, TerrainTransparency terrainTransparencySettings)
    {
        var currentLocationOnTerrainAlphaMap = new Vector2((terrainData.alphamapResolution / terrainData.size.x) * position.x, (terrainData.alphamapResolution / terrainData.size.z) * position.z);

        var aPos = (int)currentLocationOnTerrainAlphaMap.y; // for some reason we need to flip them
        var bPos = (int)currentLocationOnTerrainAlphaMap.x;

        if (aPos >= 0 && aPos < terrainData.alphamapResolution && bPos >= 0 && bPos < terrainData.alphamapResolution) // if in-bounds
        {
            float transparency = terrainTransparencySettings.transparencyMap.GetPixel(bPos, aPos).a; //terrainAlphamaps[aPos, bPos, slotIndex];
            float opacity = 1.0f - transparency;
            float finalOpacity = opacity > terrainTransparencySettings.alphaCutoff ? 1 : 0;
            return finalOpacity;
        }

        return 1; // if no texture detected underneath, assume we're on solid/opaque terrain
    }
Beispiel #6
0
    public override void OnInspectorGUI()
    {
        if (!target)
        {
            target = (TerrainTransparency)base.target;
        }

        bool changeMade = DrawDefaultInspector();

        if (GUILayout.Button("Update Transparency Map"))
        {
            target.UpdateTransparencyMap();
            target.ApplyTransparencyMap();
        }

        // if auto-update is enabled, and just-drawn inspector made changes or an undo/redo has occurred
        if (target.autoUpdateTransparencyMap && (changeMade || (new[] { EventType.ValidateCommand, EventType.Used }.Contains(Event.current.type) && Event.current.commandName == "UndoRedoPerformed")))
        {
            target.UpdateTransparencyMap();
        }
    }