public void Cut(CUserEntity user, int resourceId) { _currentUser = user; _clipMode = ClipMode.CUTMODE; _resources.Clear(); AddResource(resourceId); }
public void Do(params object[] args) { Array = args[0] as Album[]; Mode = (ClipMode)args[1]; Clipboarder = Clipboarder.Default; Clipboarder.Default = Clipboarder.CreateClipboarder(Array, null, Mode); var builder = new LSBuilder(); var dir = $"{Program.Config["RootPath"]}/temp/clipbord_img"; if (Directory.Exists(dir)) { //删除文件夹内容 Directory.Delete(dir, true); } Directory.CreateDirectory(dir); var path_arr = new string[Array.Length]; for (var i = 0; i < Array.Length; i++) { path_arr[i] = $"{dir}/{Array[i].Name}"; Tools.SaveFile(path_arr[i], Array[i]); var json_path = path_arr[i].RemoveSuffix(".ogg"); json_path = json_path.RemoveSuffix(".img"); json_path = $"{json_path}.json"; var root = new LSObject { { "path", Array[i].Path } }; builder.Write(root, json_path); } var collection = new StringCollection(); collection.AddRange(path_arr); Clipboard.SetFileDropList(collection); }
public void Do(params object[] args) { Album = args[0] as Album; Indexes = args[1] as int[]; Mode = (ClipMode)args[2]; Clipboarder = Clipboarder.Default; Clipboarder.Default = Clipboarder.CreateClipboarder(Album, Indexes, Mode); var arr = new string[Indexes.Length]; var dir = $"{Program.Config["RootPath"]}/temp/clipbord_image"; if (Directory.Exists(dir)) { Directory.Delete(dir, true); } Directory.CreateDirectory(dir); var builder = new LSBuilder(); for (var i = 0; i < Indexes.Length; i++) { var entity = Album[Indexes[i]]; var path = $"{dir}/{entity.Index}"; builder.WriteObject(entity, path + ".json"); arr[i] = path + ".png"; entity.Picture.Save(arr[i]); } var collection = new StringCollection(); collection.AddRange(arr); Clipboard.SetFileDropList(collection); }
private void SetValue(ClipMode mode, T item) { var @new = new ClipboardValueContainer(item, mode); var old = Interlocked.Exchange(ref this.container, @new); this.ContentChanged.BeginFire(this, new ChangingEventArgs <T>(old != null ? old.Value : default(T), item)); }
public static Clipboarder CreateClipboarder(Album[] array, int[] indexes, ClipMode mode) { return(new Clipboarder { Albums = array, Indexes = indexes, Mode = mode }); }
public static Clipboarder CreateClipboarder(Album album, int[] indexes, ClipMode mode) { return(new Clipboarder { Album = album, Indexes = indexes, Mode = mode }); }
public EditorClip(EditorTrack tr, IClip c) { this.track = tr; this.clip = c; rect = Rect.zero; dragMode = DragMode.None; e = Event.current; clipMode = ClipMode.None; }
public void Cut(CUserEntity user, List <int> resources) { _currentUser = user; _clipMode = ClipMode.CUTMODE; _resources.Clear(); foreach (int res in resources) { AddResource(res); } }
public void Init(EditorTrack tr, IClip c) { this.track = tr; this.clip = c; rect = Rect.zero; dragMode = DragMode.None; e = Event.current; clipMode = ClipMode.None; select = false; Regist(EventT.Select, OnSelect); }
public void OnGUI() { rect = track.RenderRect; rect.x = TimelineWindow.inst.TimeToPixel(clip.start); float y = TimelineWindow.inst.TimeToPixel(clip.end); var timeRect = TimelineWindow.inst.timeAreaRect; rect.x = Mathf.Max(rect.x, timeRect.x); y = Mathf.Min(y, timeRect.xMax); rect.width = y - rect.x; rect.height = rect.height - 2; if (rect.width < 0) { rect.width = 0; } EditorGUI.DrawRect(rect, Color.gray); EditorGUI.DrawOutline(rect, 1, Color.white); Rect left = rect; left.x = rect.x - Mathf.Min(10, rect.width / 4); left.x = Mathf.Max(left.x, timeRect.x); left.width = Mathf.Min(20, rect.width / 2); EditorGUIUtility.AddCursorRect(left, MouseCursor.SplitResizeLeftRight); Rect right = left; right.x = rect.x + rect.width - Mathf.Min(10, rect.width / 4); right.x = Mathf.Max(right.x, timeRect.x); EditorGUIUtility.AddCursorRect(right, MouseCursor.SplitResizeLeftRight); ProcessEvent(left, right); clipMode = track.CalcuteClipMode(clip, out var loop); if (loop > 1e-2) { DrawLoops(loop); } if ((clipMode & ClipMode.Left) > 0) { left.x = rect.x + 2; left.width = 10; left.y = rect.y + rect.height / 3; left.height = rect.height / 2; GUI.Label(left, GUIContent.none, TimelineStyles.clipIn); } if ((clipMode & ClipMode.Right) > 0) { right.x = rect.xMax - 8; right.width = 8; right.y = rect.y + rect.height / 3; right.height = rect.height / 2; GUI.Label(right, GUIContent.none, TimelineStyles.clipOut); } MixProcessor(); EditorGUI.LabelField(rect, clip.Display, TimelineStyles.fontClip); }
public override ClipMode CalcuteClipMode(IClip c, out float loopLen) { var d = c.data as AnimClipData; ClipMode mode = ClipMode.None; if (d.trim_start > 1e-2) { mode |= ClipMode.Left; } if (d.trim_end < -1e-2) { mode |= ClipMode.Right; } else if (d.trim_end > 1e-2) { mode |= ClipMode.Loop; } loopLen = d.trim_end; return(mode); }
public static void Reload() { LockAxisX = EditorPrefs.GetBool("LockAxisX", false); LockAxisY = EditorPrefs.GetBool("LockAxisY", false); LockAxisZ = EditorPrefs.GetBool("LockAxisZ", false); UniformGrid = EditorPrefs.GetBool("UniformGrid", true); EditMode = GetEnum("EditMode", ToolEditMode.Generate); SnapVector = GetVector3("MoveSnap", Vector3.one); DefaultMoveOffset = GetVector3("DefaultMoveOffset", Vector3.zero); DefaultRotateOffset = GetVector3("DefaultRotateOffset", Vector3.zero); ShapeBuildMode = GetEnum("ShapeBuildMode", ShapeMode.Box); DefaultTexGenFlags = GetEnum("DefaultTexGenFlags", defaultTextGenFlagsState); GridVisible = EditorPrefs.GetBool("ShowGrid", true); SnapMode = (SnapMode)EditorPrefs.GetInt("SnapMode", (int)(EditorPrefs.GetBool("ForceSnapToGrid", true) ? SnapMode.GridSnapping : SnapMode.None)); VisibleHelperSurfaces = GetEnum("HelperSurfaces", DefaultHelperSurfaceFlags); ClipMode = GetEnum("ClipMode", ClipMode.RemovePositive); EnableRealtimeCSG = EditorPrefs.GetBool("EnableRealtimeCSG", true); DefaultMaterial = GetMaterial("DefaultMaterial", MaterialUtility.WallMaterial); SnapScale = EditorPrefs.GetFloat("ScaleSnap", 0.1f); SnapRotation = EditorPrefs.GetFloat("RotationSnap", 15.0f); DefaultShapeHeight = EditorPrefs.GetFloat("DefaultShapeHeight", 1.0f); CurveSides = (uint)EditorPrefs.GetInt("CurveSides", 10); SelectionVertex = EditorPrefs.GetBool("SelectionVertex", true); SelectionEdge = EditorPrefs.GetBool("SelectionEdge", true); SelectionSurface = EditorPrefs.GetBool("SelectionSurface", true); HiddenSurfacesNotSelectable = EditorPrefs.GetBool("HiddenSurfacesNotSelectable", true); // HiddenSurfacesOrthoSelectable = EditorPrefs.GetBool("HiddenSurfacesOrthoSelectable", true); ShowTooltips = EditorPrefs.GetBool("ShowTooltips", true); AutoRigidbody = EditorPrefs.GetBool("AutoRigidbody", (CSGModel.DefaultSettings & ModelSettingsFlags.AutoUpdateRigidBody) == ModelSettingsFlags.AutoUpdateRigidBody); DefaultPreserveUVs = EditorPrefs.GetBool("DefaultPreserveUVs", (CSGModel.DefaultSettings & ModelSettingsFlags.PreserveUVs) == ModelSettingsFlags.PreserveUVs); SnapNonCSGObjects = EditorPrefs.GetBool("SnapNonCSGObjects", true); AutoCommitExtrusion = EditorPrefs.GetBool("AutoCommitExtrusion", false); MaxSphereSplits = Mathf.Max(3, EditorPrefs.GetInt("MaxSphereSplits", 9)); CircleSides = Mathf.Max(3, EditorPrefs.GetInt("CircleSides", 18)); MaxCircleSides = Mathf.Max(3, EditorPrefs.GetInt("MaxCircleSides", 144)); CircleOffset = EditorPrefs.GetFloat("CircleOffset", 0); CircleSmoothShading = EditorPrefs.GetBool("CircleSmoothShading", true); CircleSingleSurfaceEnds = EditorPrefs.GetBool("CircleSingleSurfaceEnds", true); CircleDistanceToSide = EditorPrefs.GetBool("CircleDistanceToSide", true); CircleRecenter = EditorPrefs.GetBool("CircleRecenter", true); SphereSplits = Mathf.Max(1, EditorPrefs.GetInt("SphereSplits", 1)); SphereOffset = EditorPrefs.GetFloat("SphereOffset", 0); SphereSmoothShading = EditorPrefs.GetBool("SphereSmoothShading", true); SphereDistanceToSide = EditorPrefs.GetBool("SphereDistanceToSide", true); HemiSphereMode = EditorPrefs.GetBool("HemiSphereMode", false); LinearStairsStepLength = EditorPrefs.GetFloat("LinearStairsStepLength", 0.30f); LinearStairsStepHeight = EditorPrefs.GetFloat("LinearStairsStepHeight", 0.20f); LinearStairsStepWidth = EditorPrefs.GetFloat("LinearStairsStepWidth", 1.0f); LinearStairsTotalSteps = EditorPrefs.GetInt("LinearStairsTotalSteps", 4); LinearStairsLength = EditorPrefs.GetFloat("LinearStairsLength", 16.0f); LinearStairsHeight = EditorPrefs.GetFloat("LinearStairsHeight", 16.0f); LinearStairsLengthOffset = EditorPrefs.GetFloat("LinearStairsLengthOffset", 0.0f); LinearStairsHeightOffset = EditorPrefs.GetFloat("LinearStairsHeightOffset", 0.0f); DistanceUnit = GetEnum("DistanceUnit", DistanceUnit.Meters); ShowSceneInfo = EditorPrefs.GetBool("ShowSceneInfo", false); var sceneViews = SortedSceneViews(); EnsureValidSceneviewNames(sceneViews); var arrayString = EditorPrefs.GetString("Wireframe", string.Empty); if (arrayString.Contains(',')) { LegacyLoadWireframeSettings(sceneViews, arrayString); } else { LoadWireframeSettings(sceneViews, arrayString); } UpdateSnapSettings(); }
public void OnGUI() { rect = track.RenderRect; rect.x = SeqenceWindow.inst.TimeToPixel(clip.start); float y = SeqenceWindow.inst.TimeToPixel(clip.end); var timeRect = SeqenceWindow.inst.timeAreaRect; rect.x = Mathf.Max(rect.x, timeRect.x); y = Mathf.Min(y, timeRect.xMax); rect.width = y - rect.x; rect.height = rect.height - 2; if (rect.width < 0) { rect.width = 0; } var color = EditorGUIUtility.isProSkin ? Color.gray : Color.white; if (select) { color = color - SeqenceStyle.addtiveClip; } if (EditorGUIUtility.isProSkin) { EditorGUI.DrawRect(rect, color); EditorGUI.DrawOutline(rect, 1, Color.white); } else { EditorGUI.DrawRect(rect, color); EditorGUI.DrawOutline(rect, 1, Color.gray); } Rect left = rect; left.x = rect.x - Mathf.Min(10, rect.width / 4); left.x = Mathf.Max(left.x, timeRect.x); left.width = Mathf.Min(20, rect.width / 2); EditorGUIUtility.AddCursorRect(left, MouseCursor.SplitResizeLeftRight); Rect right = left; right.x = rect.x + rect.width - Mathf.Min(10, rect.width / 4); right.x = Mathf.Max(right.x, timeRect.x); EditorGUIUtility.AddCursorRect(right, MouseCursor.SplitResizeLeftRight); ProcessEvent(left, right); clipMode = track.CalcuteClipMode(clip, out var loop); if (loop > 1e-2) { DrawLoops(loop); } if ((clipMode & ClipMode.Left) > 0) { left.x = rect.x + 2; left.width = 10; left.y = rect.y + rect.height / 3; left.height = rect.height / 2; GUI.Label(left, GUIContent.none, SeqenceStyle.clipIn); } if ((clipMode & ClipMode.Right) > 0) { right.x = rect.xMax - 8; right.width = 8; right.y = rect.y + rect.height / 3; right.height = rect.height / 2; GUI.Label(right, GUIContent.none, SeqenceStyle.clipOut); } MixProcessor(); }
public ResourceClip() { _clipMode = ClipMode.NONE; _resources = new List <int>(); _currentUser = null; }
internal ClipboardValueContainer(T value, ClipMode mode) { this.Value = value; this.Mode = mode; }
public static void Reload() { RealtimeCSG.CSGSettings.LockAxisX = EditorPrefs.GetBool("LockAxisX", false); RealtimeCSG.CSGSettings.LockAxisY = EditorPrefs.GetBool("LockAxisY", false); RealtimeCSG.CSGSettings.LockAxisZ = EditorPrefs.GetBool("LockAxisZ", false); RealtimeCSG.CSGSettings.UniformGrid = EditorPrefs.GetBool("UniformGrid", true); RealtimeCSG.CSGSettings.EditMode = (ToolEditMode)EditorPrefs.GetInt("EditMode", (int)ToolEditMode.Generate); var moveSnapVector = new Vector3(EditorPrefs.GetFloat("MoveSnapX", 1.0f), EditorPrefs.GetFloat("MoveSnapY", 1.0f), EditorPrefs.GetFloat("MoveSnapZ", 1.0f)); RealtimeCSG.CSGSettings.SnapVector = moveSnapVector; var moveOffsetVector = new Vector3(EditorPrefs.GetFloat("DefaultMoveOffsetX", 0.0f), EditorPrefs.GetFloat("DefaultMoveOffsetY", 0.0f), EditorPrefs.GetFloat("DefaultMoveOffsetZ", 0.0f)); RealtimeCSG.CSGSettings.DefaultMoveOffset = moveOffsetVector; var rotateOffsetVector = new Vector3(EditorPrefs.GetFloat("DefaultRotateOffsetX", 0.0f), EditorPrefs.GetFloat("DefaultRotateOffsetY", 0.0f), EditorPrefs.GetFloat("DefaultRotateOffsetZ", 0.0f)); RealtimeCSG.CSGSettings.DefaultRotateOffset = rotateOffsetVector; RealtimeCSG.CSGSettings.ShapeBuildMode = (ShapeMode)EditorPrefs.GetInt("ShapeBuildMode", (int)ShapeMode.Box); RealtimeCSG.CSGSettings.GridVisible = EditorPrefs.GetBool("ShowGrid", true); RealtimeCSG.CSGSettings.SnapToGrid = EditorPrefs.GetBool("ForceSnapToGrid", true); var helperSurfaces = (HelperSurfaceFlags)EditorPrefs.GetInt("HelperSurfaces", (int)DefaultHelperSurfaceFlags); RealtimeCSG.CSGSettings.VisibleHelperSurfaces = helperSurfaces; RealtimeCSG.CSGSettings.ClipMode = (ClipMode)EditorPrefs.GetInt("ClipMode", 0); RealtimeCSG.CSGSettings.EnableRealtimeCSG = EditorPrefs.GetBool("EnableRealtimeCSG", true); var defaultMaterialGUID = EditorPrefs.GetString("DefaultMaterial", null); if (defaultMaterialGUID != null) { var defaultMaterialAssetPath = AssetDatabase.GUIDToAssetPath(defaultMaterialGUID); var materialFromID = AssetDatabase.LoadAssetAtPath <Material>(defaultMaterialAssetPath); if (materialFromID) { DefaultMaterial = materialFromID; } else { DefaultMaterial = MaterialUtility.WallMaterial; } } else { DefaultMaterial = MaterialUtility.WallMaterial; } RealtimeCSG.CSGSettings.SnapScale = EditorPrefs.GetFloat("ScaleSnap", 0.1f); RealtimeCSG.CSGSettings.SnapRotation = EditorPrefs.GetFloat("RotationSnap", 15.0f); RealtimeCSG.CSGSettings.DefaultShapeHeight = EditorPrefs.GetFloat("DefaultShapeHeight", 1.0f); RealtimeCSG.CSGSettings.CurveSides = (uint)EditorPrefs.GetInt("CurveSides", 10); CircleSides = Mathf.Max(3, EditorPrefs.GetInt("CircleSides", 18)); CircleOffset = EditorPrefs.GetFloat("CircleOffset", 0); CircleSmoothShading = EditorPrefs.GetBool("CircleSmoothShading", true); CircleSingleSurfaceEnds = EditorPrefs.GetBool("CircleSingleSurfaceEnds", true); CircleDistanceToSide = EditorPrefs.GetBool("CircleDistanceToSide", true); CircleRecenter = EditorPrefs.GetBool("CircleRecenter", true); SphereSplits = Mathf.Max(1, EditorPrefs.GetInt("SphereSplits", 1)); SphereOffset = EditorPrefs.GetFloat("SphereOffset", 0); SphereSmoothShading = EditorPrefs.GetBool("SphereSmoothShading", true); SphereDistanceToSide = EditorPrefs.GetBool("SphereDistanceToSide", true); HemiSphereMode = EditorPrefs.GetBool("HemiSphereMode", false); LinearStairsStepLength = EditorPrefs.GetFloat("LinearStairsStepLength", 0.30f); LinearStairsStepHeight = EditorPrefs.GetFloat("LinearStairsStepHeight", 0.20f); LinearStairsStepWidth = EditorPrefs.GetFloat("LinearStairsStepWidth", 1.0f); LinearStairsTotalSteps = EditorPrefs.GetInt("LinearStairsTotalSteps", 4); LinearStairsLength = EditorPrefs.GetFloat("LinearStairsLength", 16.0f); LinearStairsHeight = EditorPrefs.GetFloat("LinearStairsHeight", 16.0f); LinearStairsLengthOffset = EditorPrefs.GetFloat("LinearStairsLengthOffset", 0.0f); LinearStairsHeightOffset = EditorPrefs.GetFloat("LinearStairsHeightOffset", 0.0f); var distanceUnit = (DistanceUnit)EditorPrefs.GetInt("DistanceUnit", (int)DistanceUnit.Meters); RealtimeCSG.CSGSettings.DistanceUnit = distanceUnit; var sceneViews = SortedSceneViews(); EnsureValidSceneviewNames(sceneViews); var arrayString = EditorPrefs.GetString("Wireframe", string.Empty); if (arrayString.Contains(',')) { LegacyLoadWireframeSettings(sceneViews, arrayString); } else { LoadWireframeSettings(sceneViews, arrayString); } UpdateSnapSettings(); }
public static Solid Clip(Solid A, Solid B, ClipMode mode) { List <CFace> Ai, Ax, Ao, Bi, Bx, Bo; CSolid Ac = ReduceSolid(A); CSolid Bc = ReduceSolid(B); //Divvy(Ac, Bc, out Ai, out Ax, out Ao); //Divvy(Bc, Ac, out Bi, out Bx, out Bo); Ai = new List <CFace>(); Ao = new List <CFace>(); Bi = new List <CFace>(); Bo = new List <CFace>(); foreach (CFace a in Ac.faces) { Vector3[] p = PolyTransform(a.GetVerts(), a); List <List <Vector3> > cross = CrossSection(Bc, a); foreach (List <Vector3> ql in cross) { Vector3[] q = ql.ToArray(); List <Vector3[]> pi, po; Clip2D(p, q, out pi, out po); foreach (Vector3[] poly in pi) { Ai.Add(Ac.MapFace(DePolyTransform(poly, a))); } foreach (Vector3[] poly in po) { Ao.Add(Ac.MapFace(DePolyTransform(poly, a))); } } if (cross.Count == 0) { if (B.ContainsPoint(Ac.vertices[a.points[0]].position)) { Ai.Add(a); } else { Ao.Add(a); } } } foreach (CFace b in Bc.faces) { Vector3[] p = PolyTransform(b.GetVerts(), b); List <List <Vector3> > cross = CrossSection(Ac, b); foreach (List <Vector3> ql in cross) { Vector3[] q = ql.ToArray(); List <Vector3[]> pi, po; Clip2D(p, q, out pi, out po); foreach (Vector3[] poly in pi) { Bi.Add(Bc.MapFace(DePolyTransform(poly, b))); } foreach (Vector3[] poly in po) { Bo.Add(Bc.MapFace(DePolyTransform(poly, b))); } } if (cross.Count == 0) { if (A.ContainsPoint(Bc.vertices[b.points[0]].position)) { Bi.Add(b); } else { Bo.Add(b); } } } //Set up merged CSolid CSolid Cc; Cc.vertices = new List <CPoint>(); Cc.faces = new List <CFace>(); int ACount = Ac.vertices.Count; Cc.vertices.AddRange(Ac.vertices); Cc.vertices.AddRange(Bc.vertices); //find points that are probably the same int[] map = new int[Cc.vertices.Count]; float epsilon = 0.005f; for (int i = 0; i < Cc.vertices.Count; ++i) { map[i] = -1; } for (int i = Cc.vertices.Count - 1; i >= 0; --i) { for (int j = 0; j <= i; ++j) { if (Vector3.Distance(Cc.vertices[i].position, Cc.vertices[j].position) < epsilon) { if (Cc.vertices[i].id != -1) { Cc.vertices[j].SetId(Cc.vertices[i].id); } map[i] = j; break; } } } //Add verts to merged CSolid if (mode == ClipMode.Subtract) { foreach (CFace f in Ao) { for (int i = 0; i < f.points.Length; ++i) { f.points[i] = map[f.points[i]]; } } Cc.faces.AddRange(Ao); foreach (CFace f in Bi) { for (int i = 0; i < f.points.Length; ++i) { f.points[i] = map[f.points[i] + ACount]; } } Cc.faces.AddRange(Bi); } else if (mode == ClipMode.Add) { //Merge A and B into C, using faces Ao, Bi, adding to point indices of Bi respectively (TODO) } else if (mode == ClipMode.Intersect) { //Merge A and B into C, using faces Ai, Bi, adding to point indices of Bi respectively (TODO) } //Find used vertices bool[] used = new bool[Cc.vertices.Count]; foreach (CFace f in Cc.faces) { foreach (int i in f.points) { used[i] = true; } } //Map duplicate points, create new points, delete unused points Point[] points = new Point[Cc.vertices.Count]; //Sparse Array Dictionary <int, Edge>[] edgeTo = new Dictionary <int, Edge> [Cc.vertices.Count]; //Sparse grid for (int i = 0; i < Cc.vertices.Count; ++i) { if (used[i]) { if (map[i] == i) { points[i] = Cc.vertices[i].id == -1 ? new Point(Cc.vertices[i].position) : DCGBase.all[Cc.vertices[i].id] as Point; Cc.vertices[i].SetId(points[i].elementID); edgeTo[i] = new Dictionary <int, Edge>(); } } else { if (Cc.vertices[i].id != -1) { DCGBase.all[Cc.vertices[i].id].Remove(); } } } //Nuke A and B foreach (Point p in A.getPoints()) { for (int i = p.edges.Count - 1; i >= 0; --i) { p.edges[i].Remove(); } } foreach (Point p in B.getPoints()) { for (int i = p.edges.Count - 1; i >= 0; --i) { p.edges[i].Remove(); } } //Create new edges/faces in DCG Face[] faces = new Face[Cc.faces.Count]; for (int i = 0; i < Cc.faces.Count; ++i) { CFace f = Cc.faces[i]; Edge[] edges = new Edge[f.points.Length]; Debug.Log(f.points.Length); for (int j = 0; j < f.points.Length; ++j) { int k = (j + 1) % f.points.Length; int pk = f.points[k]; int pj = f.points[j]; bool kcj = edgeTo[pk].ContainsKey(pj); bool jck = edgeTo[pj].ContainsKey(pk); if (jck) { edges[j] = edgeTo[pj][pk]; if (!kcj) { edgeTo[pk].Add(pj, edges[j]); } } else if (kcj) { edges[j] = edgeTo[pk][pj]; if (!jck) { edgeTo[pj].Add(pk, edges[j]); } } else { edges[j] = new Edge(points[pj], points[pk]); //if (!jck) edgeTo[pj].Add(pk, edges[j]); //if (!kcj) edgeTo[pk].Add(pj, edges[j]); } //Debug.DrawLine(edges[j].points[0].position, edges[j].points[1].position, new Color(Random.value, Random.value, Random.value), 1000, false); } //Debug.Log(edges.Length); faces[i] = new Face(new List <Edge>(edges)); } //Create new solid from C return(new Solid(new List <Face>(faces))); //return new Solid(); //TODO eventually, if we have time: //Relate generated Faces and Edges to existing Faces and Edges, in order to reduce new objects being created or to copy materials/etc. }
public static SKClipOperation ToSkOperation(this ClipMode mode) { return(mode == ClipMode.Include ? SKClipOperation.Intersect : SKClipOperation.Difference); }
public static T ClipMode <T>(this T mask, ClipMode clipMode) where T : GradientMask { mask.ClipMode = clipMode; return(mask); }