private void Awake()
        {
            m_terrainEditor = GetComponentInParent <TerrainEditor>();
            m_editor        = IOC.Resolve <IRTE>();
            m_editor.Selection.SelectionChanged     += OnEditorSelectionChanged;
            m_terrainCutoutRenderer                  = IOC.Resolve <ITerrainCutoutMaskRenderer>();
            m_terrainCutoutRenderer.ObjectImageLayer = m_editor.CameraLayerSettings.ResourcePreviewLayer;

            m_source = FindObjectOfType <TerrainBrushSource>();
            if (m_source == null)
            {
                m_source = new GameObject("TerrainBrushSource").AddComponent <TerrainBrushSource>();
            }

            if (m_brushesList != null)
            {
                m_brushesList.SelectionChanged += OnBrushesSelectionChanged;
                m_brushesList.ItemDataBinding  += OnBrushesDataBinding;
                m_brushesList.CanDrag           = false;
                m_brushesList.CanEdit           = false;
                m_brushesList.CanRemove         = false;
                m_brushesList.CanReorder        = false;
                m_brushesList.CanReparent       = false;
                m_brushesList.CanSelectAll      = false;
                m_brushesList.CanUnselectAll    = false;
            }

            if (m_brushSizeEditor != null)
            {
                BrushSize = 2.5f;

                m_brushSizeEditor.Min = 0.5f;
                m_brushSizeEditor.Max = 40;
                m_brushSizeEditor.Init(this, this, Strong.MemberInfo((TerrainBrushEditor x) => x.BrushSize));
            }

            if (m_opacityEditor != null)
            {
                BrushOpacity = 100;

                m_opacityEditor.Min = 0;
                m_opacityEditor.Max = 100;
                m_opacityEditor.Init(this, this, Strong.MemberInfo((TerrainBrushEditor x) => x.BrushOpacity));
            }

            if (m_createButton != null)
            {
                m_createButton.onClick.AddListener(OnCreateButtonClick);
            }

            if (m_addButton != null)
            {
                m_addButton.onClick.AddListener(OnAddButtonClick);
            }

            if (m_deleteButton != null)
            {
                m_deleteButton.onClick.AddListener(OnDeleteButtonClick);
            }
        }
 private void Awake()
 {
     m_editor = IOC.Resolve <IRTE>();
     IOC.RegisterFallback <ITerrainTool>(this);
     m_cutoutMaskRenderer = IOC.Resolve <ITerrainCutoutMaskRenderer>();
     m_cutoutMaskRenderer.ObjectImageLayer = m_editor.CameraLayerSettings.ResourcePreviewLayer;
     Enabled = false;
 }
Beispiel #3
0
 protected override void OnEditorExist()
 {
     base.OnEditorExist();
     m_editor = IOC.Resolve <IRTE>();
     IOC.RegisterFallback <ITerrainTool>(this);
     m_cutoutMaskRenderer = IOC.Resolve <ITerrainCutoutMaskRenderer>();
     m_cutoutMaskRenderer.ObjectImageLayer = m_editor.CameraLayerSettings.ResourcePreviewLayer;
     ActiveTerrain = null;
 }
Beispiel #4
0
        private void Enable()
        {
            m_cutoutMaskRenderer = IOC.Resolve <ITerrainCutoutMaskRenderer>();
            m_cutoutMaskRenderer.ObjectImageLayer = m_editor.CameraLayerSettings.ResourcePreviewLayer;

            m_terrainHandlesSelection.Selection.activeGameObject  = null;
            m_terrainHandlesSelection.Selection.SelectionChanged += OnSelectionChanged;
            m_terrainHandlesSelection.CreateCustomHandle         += OnCreateCustomHandle;
            m_terrainHandlesSelection.DestroyCustomHandle        += OnDestroyCustomHandle;
            m_terrainHandlesSelection.Enabled = true;

            m_interpolator = new CachedBicubicInterpolator();

            TerrainData data = TerrainData;

            const float preferredSpace = 10;

            m_state = Terrain.GetComponent <TerrainToolState>();
            if (m_state == null)
            {
                m_additiveHeights     = GetHeightmap();
                m_interpolatedHeights = new float[data.heightmapResolution, data.heightmapResolution];

                m_state = Terrain.gameObject.GetComponent <TerrainToolState>();
                if (m_state == null)
                {
                    m_state = Terrain.gameObject.AddComponent <TerrainToolState>();
                }

                m_state.ZSize = data.size.z;
                m_state.XSize = data.size.x;

                m_zCount = Mathf.RoundToInt(Mathf.Max(2, data.size.z / preferredSpace) + 1);
                m_xCount = Mathf.RoundToInt(Mathf.Max(2, data.size.x / preferredSpace) + 1);

                m_state.ZSpacing = m_state.ZSize / (m_zCount - 1);
                m_state.XSpacing = m_state.XSize / (m_xCount - 1);

                m_state.Grid          = new float[Mathf.FloorToInt(m_zCount) * Mathf.FloorToInt(m_xCount)];
                m_state.HeightMap     = new float[data.heightmapResolution * data.heightmapResolution];
                m_state.CutoutTexture = m_cutoutMaskRenderer.CreateMask(data, null);

                XSpacing = m_state.XSpacing;
                ZSpacing = m_state.ZSpacing;
            }
            else
            {
                InitAdditiveAndInterpolatedHeights();
            }

            CreateHandles();
            EnableZTest = EnableZTest;
        }