public override void OnCleanup() { OnCleanupBase(); FlagsDrawing = 0; firstHit = null; originalPoints = new Vector3[0]; }
void OnCleanupBase() { if (CourseBase.Terrain) { CourseBase.ActiveSpline = null; } drawing = false; points = new Vector3[0]; boxes = new Vector3[0]; SplineDrawing = false; HazardDrawing = false; PointByPoint = false; FlagsDrawing = 0; }
/// <summary> /// Creates spline /// </summary> /// <param name="points"></param> /// <param name="layer"></param> /// <param name="flags"></param> /// <param name="rearrange"></param> /// <returns></returns> public static SplineBase CreateSpline(Vector3[] points, Layer layer, SplineBase.SplineInfo.Flags flags, bool rearrange = false) { if ((flags & SplineBase.SplineInfo.Flags.Square) == 0 || rearrange) { points = points.ToList().RearrangePoints(layer.metersPerOnePoint).ToArray(); } if (points.Length < 3) { return(null); } SplineBase spline = CreateSpline(points, layer, flags, FreeSplineInstanceID()); spline.UpdateLine(); splines.Add(spline); spline.LineChanged(); return(spline); }
/// <summary> /// Creates hazard /// </summary> /// <param name="points"></param> /// <param name="layer"></param> /// <param name="flags"></param> /// <param name="rearrange"></param> /// <returns></returns> public static HazardBase CreateHazard(Vector3[] points, Layer layer, SplineBase.SplineInfo.Flags flags, bool rearrange = false) { if ((flags & SplineBase.SplineInfo.Flags.Square) == 0 || rearrange) { points = points.ToList().RearrangePoints(layer.metersPerOnePoint).ToArray(); } if (points.Length < 3) { return(null); } int instanceID = FreeSplineInstanceID(); GameObject gameObject = new GameObject("Hazard " + instanceID.ToString()); if (PlatformBase.IO.IsEditor) { PlatformBase.Editor.RegisterCreatedObjectUndo(gameObject, "Spline tool Creation"); PlatformBase.Editor.SetStaticFlags(gameObject); gameObject.hideFlags = HideFlags.HideInHierarchy; } HazardBase hazard = (HazardBase)gameObject.AddComponent(Types.GetType("PerfectParallel.CourseForge.Hazard", "Assembly-CSharp")); hazard.Info.layerName = layer.name; hazard.Points = (Vector3[])points.Clone(); hazard.Info.colorNames = new string[points.Length]; for (int i = 0; i < hazard.Info.colorNames.Length; ++i) { hazard.Info.colorNames[i] = layer.name; } hazard.Info.flags = (int)flags; hazard.Info.InstanceID = instanceID; hazard.UpdateLine(); splines.Add(hazard); hazard.LineChanged(); return(hazard); }
SplineBase.SplineInfo.Flags SquareField(SplineBase.SplineInfo.Flags flags) { Background(); SetColor(); if (flags.AND(SplineBase.SplineInfo.Flags.Square)) { SetColor(Green); } if (Button(rectangleTexture) && !drawing) { if (flags.AND(SplineBase.SplineInfo.Flags.Square)) { flags -= SplineBase.SplineInfo.Flags.Square; } else { flags |= SplineBase.SplineInfo.Flags.Square; } } SetColor(); return(flags); }
SplineBase.SplineInfo.Flags HoleFlagsField(SplineBase.SplineInfo.Flags flags) { Background(); SetColor(); if (flags.AND(SplineBase.SplineInfo.Flags.Hole)) { SetColor(Green); } if (Button(holeTexture) && !drawing) { if (flags.AND(SplineBase.SplineInfo.Flags.Hole)) { flags -= SplineBase.SplineInfo.Flags.Hole; } else { flags |= SplineBase.SplineInfo.Flags.Hole; } } SetColor(); return(flags); }
/// <summary> /// Creates spline /// </summary> /// <param name="points"></param> /// <param name="layer"></param> /// <param name="flags"></param> /// <param name="instanceID"></param> /// <returns></returns> public static SplineBase CreateSpline(Vector3[] points, Layer layer, SplineBase.SplineInfo.Flags flags, int instanceID) { GameObject gameObject = new GameObject("Spline " + instanceID.ToString()); if (PlatformBase.IO.IsEditor) { PlatformBase.Editor.RegisterCreatedObjectUndo(gameObject, "Spline tool Creation"); PlatformBase.Editor.SetStaticFlags(gameObject); gameObject.hideFlags = HideFlags.HideInHierarchy; } SplineBase spline = (SplineBase)gameObject.AddComponent(Types.GetType("PerfectParallel.CourseForge.Spline", "Assembly-CSharp")); spline.Info.layerName = layer.name; spline.Points = (Vector3[])points.Clone(); spline.Info.flags = (int)flags; spline.Info.InstanceID = instanceID; spline.UpdateLine(); splines.Add(spline); spline.LineChanged(); return(spline); }
public override void OnUI(bool selected) { if (selected) { #region Delete if (CourseBase.ActiveSpline && Event.current.keyCode == KeyCode.Delete && Event.current.type == EventType.KeyDown) { CourseBase.ActiveSpline.LineChanged(); CourseBase.ActiveSpline.Transform.parent = null; if (!CourseBase.ActiveSpline.IsHazard) { CourseBase.ActiveSpline.Transform.DetachChildren(); } MonoBehaviour.DestroyImmediate(CourseBase.ActiveSpline.Transform.gameObject); if (CourseBase.ActiveSpline.IsHazard) { CourseBase.Hazards.Remove(CourseBase.ActiveSpline as HazardBase); } else { CourseBase.Splines.Remove(CourseBase.ActiveSpline); } CourseBase.Curves.Remove(CourseBase.ActiveSpline); CourseBase.ActiveSpline = null; Event.current.Use(); return; } #endregion BeginUI(); Move(3, 0); if (CourseBase.ActiveSpline != null) { SetColor(Green); Move(3, 0); if (!(CourseBase.ActiveSpline is HazardBase)) { CourseBase.ActiveSpline.Info.flags = (int)HoleFlagsField((SplineBase.SplineInfo.Flags)CourseBase.ActiveSpline.Info.flags); SetColor(Green); } Move(1, 0); CourseBase.ActiveSpline.Info.flags = (int)SquareField((SplineBase.SplineInfo.Flags)CourseBase.ActiveSpline.Info.flags); Move(1, 0); SetColor(Green); if (CourseBase.ActiveSpline is HazardBase) { Layer layer = CourseBase.ActiveSpline.Layer; CourseBase.ActiveSpline.Layer = LayerPopup("Layer", CourseBase.ActiveSpline.Layer, CourseBase.HazardLayers, 3); Move(3, 0); if (layer != CourseBase.ActiveSpline.Layer) { for (int i = 0; i < CourseBase.ActiveSpline.Info.colorNames.Length; ++i) { CourseBase.ActiveSpline.Info.colorNames[i] = CourseBase.ActiveSpline.Layer.name; } } } else { CourseBase.ActiveSpline.Layer = LayerPopup("Layer", CourseBase.ActiveSpline.Layer, CourseBase.SplineLayers, 3); SetColor(); Move(3, 0); CourseBase.ActiveSpline.Info.locked = LockedField(CourseBase.ActiveSpline.Info.locked); } Move(1, 0); SetColor(); } else { SplineField(); Move(1, 0); HazardField(); Move(1, 0); if (SplineDrawing) { PointByPointField(); Move(1, 0); FlagsDrawing = HoleFlagsField(FlagsDrawing); Move(1, 0); FlagsDrawing = SquareField(FlagsDrawing); Move(1, 0); LayerName = LayerPopup("Layer", CourseBase.GetLayer(LayerName, CourseBase.SplineLayers), CourseBase.SplineLayers, 3).name; Move(3, 0); } if (HazardDrawing) { PointByPointField(); Move(1, 0); FlagsDrawing = HoleFlagsField(FlagsDrawing); Move(1, 0); FlagsDrawing = SquareField(FlagsDrawing); Move(1, 0); LayerName = LayerPopup("Layer", CourseBase.GetLayer(LayerName, CourseBase.HazardLayers), CourseBase.HazardLayers, 3).name; Move(3, 0); } } EndUI(); List <SplineBase> splines = CourseBase.Curves; for (int i = 0; i < splines.Count; ++i) { OnSplineGUI(splines[i], selected); } } if (LeftMouseDown) { CourseBase.ActiveSpline = null; } if (selected) { if (CourseBase.ActiveSpline == null && (SplineDrawing || HazardDrawing)) { OnMouse(); } if (Event.current.type == EventType.Repaint) { EditorGUIUtility.AddCursorRect(new Rect(0, 0, Screen.width, Screen.height), MouseCursor.Arrow); } } }