// Called when the mouse begins hovering an editable object. internal override void OnBrushEnter(EditableObject target, BrushSettings settings) { base.OnBrushEnter(target, settings); if (target.graphicsMesh == null) { return; } EditableObjectData data; if (!m_EditableObjectsData.TryGetValue(target, out data)) { data = new EditableObjectData(); m_EditableObjectsData.Add(target, data); } RebuildCaches(target, settings); data.TriangleLookup = PolyMeshUtility.GetAdjacentTriangles(target.editMesh); MeshRenderer mr = target.gameObjectAttached.GetComponent <MeshRenderer>(); if (mr != null && mr.sharedMaterials != null) { data.LikelySupportsVertexColors = mr.sharedMaterials.Any(x => x != null && x.shader != null && PolyShaderUtil.SupportsVertexColors(x.shader)); } else { data.LikelySupportsVertexColors = false; } }
void RebuildCaches(PolyMesh m, float strength) { m_VertexCount = m.vertexCount; m_TriangleLookup = PolyMeshUtility.GetAdjacentTriangles(m); if (meshAttributes == null) { // clear caches splat_cache = null; splat_current = null; splat_target = null; splat_erase = null; return; } splat_cache = new SplatSet(m, meshAttributes); splat_current = new SplatSet(splat_cache); splat_target = new SplatSet(m_VertexCount, meshAttributes); splat_erase = new SplatSet(m_VertexCount, meshAttributes); }
void RebuildCaches(EditableObjectData data) { PolyMesh mesh = data.CacheTarget.editMesh; data.VertexCount = mesh.vertexCount; data.TriangleLookup = PolyMeshUtility.GetAdjacentTriangles(mesh); if (meshAttributes == null) { // clear caches data.SplatCache = null; data.SplatCurrent = null; data.SplatTarget = null; data.SplatErase = null; return; } data.SplatCache = new SplatSet(mesh, meshAttributes); SetupBaseTextures(data.SplatCache); data.SplatCurrent = new SplatSet(data.SplatCache); data.SplatTarget = new SplatSet(data.VertexCount, meshAttributes); data.SplatErase = new SplatSet(data.VertexCount, meshAttributes); }