protected virtual void OnDestroy() { Unlock(); P3D_BrushPreview.Mark(); P3D_BrushPreview.Sweep(); P3D_TexturePreview.Mark(); P3D_TexturePreview.Sweep(); }
private void ShowBrushPreview(P3D_Result result) { var width = currentTexture.width; var height = currentTexture.height; var uv = result.GetUV(P3D_CoordType.UV1); var xy = P3D_Helper.CalculatePixelFromCoord(uv, CurrentTiling, CurrentOffset, width, height); var matrix = P3D_Helper.CreateMatrix(xy + new Vector2(0.01f, 0.01f), currentBrush.Size * 0.999f, currentBrush.Angle).Inverse; var resolution = new Vector2(width, height); P3D_BrushPreview.Show(lockedMesh, currentMaterialIndex, lockedGameObject.transform, previewBrushOpacity, matrix, resolution, currentBrush.Shape, CurrentTiling, CurrentOffset); }
public static void Mark() { for (int i = AllPreviews.Count - 1; i >= 0; i--) { P3D_BrushPreview preview = AllPreviews[i]; if (preview != null) { preview.age = 5; } } }
public static void Sweep() { for (int i = AllPreviews.Count - 1; i >= 0; i--) { P3D_BrushPreview preview = AllPreviews[i]; if ((preview != null) && (preview.age > 1)) { AllPreviews.RemoveAt(i); P3D_Helper.Destroy <GameObject>(preview.gameObject); } } }
public static P3D_Painter.PaintOperation Preview(Mesh mesh, int submeshIndex, Transform transform, Texture2D shape, Color color, Vector2 tiling, Vector2 offset) { return((Texture2D canvas, P3D_Matrix matrix, float opacity) => { if (transform != null) { var paintMatrix = matrix.Inverse; var canvasResolution = new Vector2(canvas.width, canvas.height); P3D_BrushPreview.Show(mesh, submeshIndex, transform, opacity, paintMatrix, canvasResolution, shape, color, tiling, offset); } }); }
// Draws the brush and texture previews in the main scene view protected override void OnScene(SceneView sceneView, Camera camera, Vector2 mousePosition) { if (sceneView == (SceneView)SceneView.sceneViews[0]) { P3D_BrushPreview.Sweep(); P3D_BrushPreview.Mark(); P3D_TexturePreview.Sweep(); P3D_TexturePreview.Mark(); if (lastMousePosition != mousePosition) { sceneView.Repaint(); } lastMousePosition = mousePosition; } UpdateLock(); if (locked == true) { if (mousePosition.x >= 0.0f && mousePosition.x < sceneView.position.width && mousePosition.y >= 0.0f && mousePosition.y < sceneView.position.height) { if (Event.current.button == 0) { if (Event.current.type == EventType.MouseDown || Event.current.type == EventType.MouseDrag) { if (colorPickerWindowIsOpened) { PickColor(camera, mousePosition); } else { Paint(camera, mousePosition); } } } if (!colorPickerWindowIsOpened) { ShowBrushPreview(camera, mousePosition); } } if (Event.current.type == EventType.MouseUp) { FinishPaint(); } //ShowTexturePreview(); } }
public static void Show(Mesh mesh, int submeshIndex, Transform transform, float opacity, P3D_Matrix paintMatrix, Vector2 canvasResolution, Texture2D shape, Vector2 tiling, Vector2 offset) { for (int i = AllPreviews.Count - 1; i >= 0; i--) { P3D_BrushPreview preview = AllPreviews[i]; if ((preview != null) && (preview.age > 0)) { preview.UpdateShow(mesh, submeshIndex, transform, opacity, paintMatrix, canvasResolution, shape, tiling, offset); return; } } P3D_BrushPreview preview2 = new GameObject("P3D_BrushPreview") { hideFlags = HideFlags.HideAndDontSave }.AddComponent <P3D_BrushPreview>(); preview2.hideFlags = HideFlags.HideAndDontSave; preview2.UpdateShow(mesh, submeshIndex, transform, opacity, paintMatrix, canvasResolution, shape, tiling, offset); }