コード例 #1
0
        public static int FindDetailPrototype(Terrain terrain, Terrain sourceTerrain, int sourceDetail)
        {
            if (sourceDetail == PaintDetailsTool.kInvalidDetail ||
                sourceDetail >= sourceTerrain.terrainData.detailPrototypes.Length)
            {
                return(PaintDetailsTool.kInvalidDetail);
            }

            if (terrain == sourceTerrain)
            {
                return(sourceDetail);
            }

            DetailPrototype sourceDetailPrototype = sourceTerrain.terrainData.detailPrototypes[sourceDetail];

            for (int i = 0; i < terrain.terrainData.detailPrototypes.Length; ++i)
            {
                if (sourceDetailPrototype.Equals(terrain.terrainData.detailPrototypes[i]))
                {
                    return(i);
                }
            }

            return(PaintDetailsTool.kInvalidDetail);
        }
コード例 #2
0
        public override void OnEnterToolMode()
        {
            detailOpacity  = EditorPrefs.GetFloat("TerrainDetailOpacity", 1.0f);
            detailStrength = EditorPrefs.GetFloat("TerrainDetailStrength", 0.8f);
            selectedDetail = EditorPrefs.GetInt("TerrainSelectedDetail", 0);

            m_TargetTerrain = null;
            if (Selection.activeGameObject != null)
            {
                m_TargetTerrain = Selection.activeGameObject.GetComponent <Terrain>();
            }

            if (m_TargetTerrain != null && m_TargetTerrain.terrainData != null)
            {
                var prototypes = m_TargetTerrain.terrainData.detailPrototypes;
                if (m_LastSelectedDetailPrototype != null)
                {
                    for (int i = 0; i < prototypes.Length; ++i)
                    {
                        if (m_LastSelectedDetailPrototype.Equals(prototypes[i]))
                        {
                            selectedDetail = i;
                            break;
                        }
                    }
                }
                selectedDetail = prototypes.Length > 0 ? Mathf.Clamp(selectedDetail, 0, prototypes.Length) : kInvalidDetail;
            }
            else
            {
                selectedDetail = kInvalidDetail;
            }
            m_LastSelectedDetailPrototype = null;
        }
コード例 #3
0
        public override void OnEnterToolMode()
        {
            Terrain terrain = null;

            if (Selection.activeGameObject != null)
            {
                terrain = Selection.activeGameObject.GetComponent <Terrain>();
            }

            if (terrain != null &&
                terrain.terrainData != null &&
                m_LastSelectedDetailPrototype != null)
            {
                for (int i = 0; i < terrain.terrainData.detailPrototypes.Length; ++i)
                {
                    if (m_LastSelectedDetailPrototype.Equals(terrain.terrainData.detailPrototypes[i]))
                    {
                        selectedDetail = i;
                        break;
                    }
                }
            }

            m_TargetTerrain = terrain;

            m_LastSelectedDetailPrototype = null;
        }
コード例 #4
0
 public override bool Equals(object obj) => _obj.Equals(obj);