/// Called when the mouse begins hovering an editable object. public virtual void OnBrushEnter(z_EditableObject target, z_BrushSettings settings) { if(z_Pref.GetBool(z_Pref.hideWireframe) && target.renderer != null) EditorUtility.SetSelectedWireframeHidden(target.renderer, true); CreateTempComponent(target, settings); }
protected virtual void CreateTempComponent(z_EditableObject target, z_BrushSettings settings) { if(!z_Util.IsValid(target)) return; tempComponent = target.gameObject.AddComponent<z_ZoomOverride>(); tempComponent.hideFlags = HideFlags.HideAndDontSave; tempComponent.SetWeights(null, 0f); }
/** * Explicit constructor. */ public z_BrushTarget(List<z_RaycastHit> hits, z_EditableObject editableObject = null) { this.raycastHits = hits; this.editableObject = editableObject; int vertexCount = editableObject.vertexCount; for(int i = 0; i < vertexCount; i++) weights.Add(i, 0f); }
protected override void CreateTempComponent(z_EditableObject target, z_BrushSettings settings) { z_OverlayRenderer ren = target.gameObject.AddComponent<z_OverlayRenderer>(); ren.SetMesh(target.mesh); ren.fullColor = z_Pref.GetColor(z_Pref.brushColor); ren.gradient = z_Pref.GetGradient(z_Pref.brushGradient); tempComponent = ren; }
public override void OnBrushEnter(z_EditableObject target, z_BrushSettings settings) { base.OnBrushEnter(target, settings); neighborLookup = z_MeshUtility.GetAdjacentVertices(target.mesh); int vertexCount = target.mesh.vertexCount; cached_vertices = new Vector3[vertexCount]; cached_normals = new Vector3[vertexCount]; System.Array.Copy(target.mesh.vertices, cached_vertices, vertexCount); System.Array.Copy(target.mesh.normals, cached_normals, vertexCount); }
public override void OnBrushEnter(z_EditableObject target, z_BrushSettings settings) { base.OnBrushEnter(target, settings); nonManifoldIndices = z_MeshUtility.GetNonManifoldIndices(target.mesh); }
/// Called when the mouse exits hovering an editable object. public override void OnBrushExit(z_EditableObject target) { base.OnBrushExit(target); colors_cache.Apply(target.mesh); likelySupportsTextureBlending = true; }
/// Called when the mouse begins hovering an editable object. public override void OnBrushEnter(z_EditableObject target, z_BrushSettings settings) { base.OnBrushEnter(target, settings); if(target.mesh == null) return; MeshRenderer mr = target.gameObject.GetComponent<MeshRenderer>(); Material mat = mr == null ? null : mr.sharedMaterials.FirstOrDefault(x => x != null && z_ShaderUtil.SupportsTextureBlending(x.shader)); likelySupportsTextureBlending = mat != null; if(likelySupportsTextureBlending) { textures = z_ShaderUtil.GetBlendTextures(mat); z_MeshChannel[] c = z_ShaderUtil.GetUsedMeshAttributes(mat); if(c != null) meshAttributes = c; } if( textures != null && brushColor.Length != textures.Length ) brushColor.Resize(textures.Length); RebuildCaches(target.mesh, settings); }
void OnBrushExit(z_EditableObject editableObject) { brushTarget.Clear(); if(editableObject != null) { mode.OnBrushExit(editableObject); if(!applyingBrush) FinalizeAndResetHovering(); } }
void OnBrushEnter(z_EditableObject editableObject, z_BrushSettings settings) { mode.OnBrushEnter(editableObject, settings); }
/// Called when the mouse exits hovering an editable object. public override void OnBrushExit(z_EditableObject target) { base.OnBrushExit(target); if(target.mesh != null) target.mesh.colors32 = colors_cache; likelySupportsVertexColors = true; }
/// Called when the mouse exits hovering an editable object. public override void OnBrushExit(z_EditableObject target) { base.OnBrushExit(target); }
/// Called when the mouse begins hovering an editable object. public override void OnBrushEnter(z_EditableObject target, z_BrushSettings settings) { base.OnBrushEnter(target, settings); }
/// Called when the mouse exits hovering an editable object. public virtual void OnBrushExit(z_EditableObject target) { if(target.renderer != null) EditorUtility.SetSelectedWireframeHidden(target.renderer, false); DestroyTempComponent(); }
bool EditableObjectRaycast(Ray mouseRay, z_EditableObject editable) { if(editable == null) return false; List<Ray> rays = new List<Ray>() { mouseRay }; if(brushMirror != z_BrushMirror.None) { Vector3 flipVec = brushMirror.ToVector3(); if(mirrorSpace == z_MirrorCoordinateSpace.World) { Vector3 cen = editable.gameObject.GetComponent<Renderer>().bounds.center; rays.Add( new Ray( Vector3.Scale(rays[0].origin - cen, flipVec) + cen, Vector3.Scale(rays[0].direction, flipVec))); } else { Transform t = SceneView.lastActiveSceneView.camera.transform; Vector3 o = t.InverseTransformPoint(rays[0].origin); Vector3 d = t.InverseTransformDirection(rays[0].direction); rays.Add(new Ray( t.TransformPoint(Vector3.Scale(o, flipVec)), t.TransformDirection(Vector3.Scale(d, flipVec)))); } } bool hitMesh = false; foreach(Ray ray in rays) { z_RaycastHit hit; if( z_SceneUtility.WorldRaycast(ray, editable.meshFilter, out hit) ) { brushTarget.raycastHits.Add(hit); brushTarget.editableObject = editable; z_SceneUtility.GetWeightedVerticesWithBrush(brushTarget, brushSettings); hitMesh = true; } } return hitMesh; }
public override void OnBrushEnter(z_EditableObject target, z_BrushSettings settings) { base.OnBrushEnter(target, settings); normalLookup = z_MeshUtility.GetSmoothNormalLookup(target.mesh); }
/// Called when the mouse begins hovering an editable object. public override void OnBrushEnter(z_EditableObject target, z_BrushSettings settings) { base.OnBrushEnter(target, settings); if(target.mesh == null) return; RebuildCaches(target.mesh, settings); MeshRenderer mr = target.gameObject.GetComponent<MeshRenderer>(); if(mr != null && mr.sharedMaterials != null) likelySupportsVertexColors = mr.sharedMaterials.Any(x => x.shader != null && z_ShaderUtil.SupportsVertexColors(x.shader)); else likelySupportsVertexColors = false; }