Ejemplo n.º 1
0
		/// 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);
		}
Ejemplo n.º 2
0
		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);
		}
Ejemplo n.º 3
0
		/**
		 *	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);
		}
Ejemplo n.º 4
0
		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;
		}
Ejemplo n.º 5
0
		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);
		}
Ejemplo n.º 6
0
		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);
		}
Ejemplo n.º 9
0
		void OnBrushExit(z_EditableObject editableObject)
		{
			brushTarget.Clear();

			if(editableObject != null)
			{
				mode.OnBrushExit(editableObject);

				if(!applyingBrush)
					FinalizeAndResetHovering();
			}

		}
Ejemplo n.º 10
0
		void OnBrushEnter(z_EditableObject editableObject, z_BrushSettings settings)
		{
			mode.OnBrushEnter(editableObject, settings);
		}
Ejemplo n.º 11
0
		/// 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;
		}
Ejemplo n.º 12
0
		/// Called when the mouse exits hovering an editable object.
		public override void OnBrushExit(z_EditableObject target)
		{
			base.OnBrushExit(target);
		}
Ejemplo n.º 13
0
		/// Called when the mouse begins hovering an editable object.
		public override void OnBrushEnter(z_EditableObject target, z_BrushSettings settings)
		{
			base.OnBrushEnter(target, settings);
		}
Ejemplo n.º 14
0
		/// 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();
		}
Ejemplo n.º 15
0
		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);
		}
Ejemplo n.º 17
0
		/// 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;
		}