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); }
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; }
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; }
public override bool Equals(object obj) => _obj.Equals(obj);