private void BuildInsertNewGeneratorMenu(GenericMenu menu, string path, List <GeneratorTreeItem> items, int insertionIndex) { foreach (var item in items) { if (item is GeneratorTreeCategory) { var category = (GeneratorTreeCategory)item; BuildInsertNewGeneratorMenu(menu, path + category.content.text + '/', category.items, insertionIndex); } else if (item is GeneratorTreeGenerator) { var generator = (GeneratorTreeGenerator)item; GUIExtensions.PushEnable(generator.onSelect != null); GenericMenu.MenuFunction callback = null; if (generator.onSelect != null) { callback = () => { generator.onSelect(_executive, insertionIndex); }; } menu.AddItem(new GUIContent(path + generator.content.text, generator.content.image, generator.content.tooltip), false, callback); } } }
private static void DirectoryButton(SerializedProperty sP, DirectoryAttribute dA, string path) { if (!GUIExtensions.ButtonOverPreviousControl()) { return; } string newDirectory = EditorUtility.OpenFolderPanel("Choose Directory", path, path.Equals("Assets") ? string.Empty : path); if (string.IsNullOrEmpty(newDirectory)) { return; } if (dA.unityDirectory) { if (!newDirectory.StartsWith(Application.dataPath)) { Debug.LogWarning("Directory must be local to project, eg. Assets..."); return; } sP.stringValue = "Assets" + newDirectory.Substring(Application.dataPath.Length); } else { sP.stringValue = newDirectory; } }
static public Vector2 XYControl(Rect rect, Vector2 value, FloatRange x_range, FloatRange y_range) { GUIControlHandle handle = GUIExtensions.GetControlHandle(FocusType.Passive); Vector2 mouse_point = handle.GetEvent().mousePosition; FloatRange interface_x_range = rect.GetHorizontalRange(); FloatRange interface_y_range = rect.GetVerticalRange().GetFlipped(); Vector2 point = new Vector2( value.x.ConvertFromRangeToRange(x_range, interface_x_range), value.y.ConvertFromRangeToRange(y_range, interface_y_range) ); GUIExtensions.DrawPoint( point, 4.0f, Color.red ); if (rect.Contains(mouse_point)) { if (handle.GetEventType().IsMouseDownish()) { return(new Vector2( mouse_point.x.ConvertFromRangeToRange(interface_x_range, x_range), mouse_point.y.ConvertFromRangeToRange(interface_y_range, y_range) )); } } return(value); }
private void DrawSprite() { _innerFrameWidth = _sprite.rect.width * _scale; _innerFrameHeight = _sprite.rect.height * _scale; _outerFrameWidth = _innerFrameWidth + 2 * _frameMargin; _outerFrameHeight = _innerFrameHeight + 2 * _frameMargin; var rect = EditorGUILayout.GetControlRect(true, _outerFrameHeight); _x = rect.min.x; _y = rect.min.y; //draw the rect that fills the scroll: GUIExtensions.DrawRect(new Rect(_x, _y, _outerFrameWidth, _outerFrameHeight), _borderColor, ref _rectTexture); //draw the background colour of each frame: _x += _frameMargin; _y += _frameMargin; GUIExtensions.DrawRect(new Rect(_x, _y, _innerFrameWidth, _innerFrameHeight), _frameColor, ref _rectTexture); //draw the sprite Texture texture = _sprite.texture; Rect textureRect = _sprite.textureRect; var textureCoords = new Rect(textureRect.x / texture.width, textureRect.y / texture.height, textureRect.width / texture.width, textureRect.height / texture.height); var positionRect = new Rect(_x, _y, _innerFrameWidth, _innerFrameHeight); GUI.DrawTextureWithTexCoords(positionRect, texture, textureCoords); }
static public bool DropZoneUnityObjects(Rect rect, out IList <UnityEngine.Object> dragging) { GUIControlHandle handle = GUIExtensions.GetControlHandle(FocusType.Passive); if (rect.Contains(handle.GetEvent().mousePosition)) { dragging = DragAndDrop .objectReferences .ToList(); if (dragging.IsNotEmpty()) { switch (handle.GetEventType()) { case EventType.DragUpdated: DragAndDrop.visualMode = DragAndDropVisualMode.Copy; break; case EventType.DragPerform: DragAndDrop.AcceptDrag(); handle.UseEvent(); return(true); } } } dragging = Empty.IList <UnityEngine.Object>(); return(false); }
public Texture2D ToTexture() { var Result = GUIExtensions.CreateEmptyTexture(); Result.LoadImage(Data); return(Result); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { EditorGUI.BeginProperty(position, label, property); Vector2 size = new Vector2(24f, EditorGUIUtility.singleLineHeight); foldout = EditorGUI.Foldout(new Rect(position.position, new Vector2(position.size.x, EditorGUIUtility.singleLineHeight)), foldout, label); var indentedRect = EditorGUI.IndentedRect(position); if (foldout) { for (int i = 0; i < propertyNames.Length; i++) { var labelPosition = new Vector2(indentedRect.x + i * 28, indentedRect.y + EditorGUIUtility.singleLineHeight); var labelRect = new Rect(labelPosition, size); GUI.Label(labelRect, propertyNames[i]); var serializedProperty = property.FindPropertyRelative(propertyNames[i]); var fieldPosition = new Vector2(indentedRect.x + i * 28, indentedRect.y + EditorGUIUtility.singleLineHeight * 2); var fieldRect = new Rect(fieldPosition, size); serializedProperty.intValue = GUIExtensions.IntField(fieldRect, serializedProperty.intValue); } } EditorGUI.indentLevel--; EditorGUI.EndProperty(); }
/// <summary> /// Draws the scene node /// </summary> /// <param name="nodeOffset">The offset caused by panning</param> public override void Draw(Vector2 nodeOffset) { if (Event.current.type != EventType.Repaint) { return; } InitializeNode(); Rect nodeRect = GetRenderRect(nodeOffset); Color color = Color.white; GUIContent display = sceneName; if (SceneId == SceneManagerController.ANY_SCENE_ID) { color = SceneManagerResources.AnySceneColor; } if (IsEntryScene) { display = new GUIContent(entryText + ":" + Environment.NewLine + sceneName.text); color = SceneManagerResources.EntrySceneColor; } if (IsActiveScene) { color = SceneManagerResources.ActiveSceneColor; } GUIExtensions.BeginColouring(color); nodeStyle.Draw(nodeRect, display, true, IsSelected(), true, false); GUIExtensions.EndColouring(); }
protected override void DrawElementInternal(int draw_id, Rect view) { Rect rect = GetElementRect(); if (vectorizer != null) { Sprite sprite = vectorizer.GetTestSprite(); if (sprite != null) { Rect info_rect; rect.SplitByYTopOffset(LINE_HEIGHT, out rect, out info_rect); float line_thickness = vectorizer.GetTestLineThickness(); float point_size = vectorizer.GetTestPointSize(); Vector2 divisor = sprite.GetTextureSize() / rect.size.GetMinComponent(); List <List <Vector2> > paths = vectorizer.VectorizeSprite(sprite) .Convert(l => l.Convert(p => p.GetWithFlippedY().GetComponentDivide(divisor) + rect.center).ToList()) .ToList(); GUIExtensions.DrawSprite(rect, sprite); GUI.Label(info_rect, "Number Vertexs: " + paths.Convert(p => p.Count).Sum()); GUI.color = Color.white; paths.Process(p => GUIExtensions.DrawLoop(p, line_thickness, point_size)); } } }
protected override void DrawElementInternal(int draw_id, Rect view) { GUIExtensions.DrawOutlinedRect(GetElementRect(), Color.gray); GUI.Label(GetElementRect(), label); is_dropped = EditorGUIExtensions.DropZone(GetElementRect(), type, out dragged); }
protected override LabeledSpritePoint DrawValueInternal(Rect rect, LabeledSpritePoint value) { string label = value.GetLabel(); Vector2 position = value.GetPosition(); EditProperty_Single_Value sprite_property = GetProperty().GetTarget().ForcePropertyValue("target_asset"); Rect label_rect; Rect position_rect; rect.SplitByXLeftPercent(0.4f, out rect, out position_rect); rect.SplitByYBottomOffset(LINE_HEIGHT, out label_rect, out rect); label = EditorGUIExtensions.TextField(label_rect, label); if (sprite_property != null) { Sprite sprite; if (sprite_property.TryGetContentValues <Sprite>(out sprite)) { position_rect = GUIExtensions.DrawSprite(position_rect, sprite); position = EditorGUIExtensions.XYControl( position_rect, position, new FloatRange(0.0f, 1.0f), new FloatRange(0.0f, 1.0f) ); } } return(new LabeledSpritePoint(label, position)); }
private void Start() { killButtonManager = UnityEngine.Object.Instantiate(hudManager.KillButton, hudManager.transform); startColorButton = killButtonManager.renderer.color; startColorText = killButtonManager.TimerText.Color; killButtonManager.gameObject.SetActive(true); killButtonManager.renderer.enabled = true; Texture2D tex = GUIExtensions.CreateEmptyTexture(); Assembly assembly = Assembly.GetExecutingAssembly(); Stream myStream = assembly.GetManifestResourceStream(ResourceName); byte[] buttonTexture = Reactor.Extensions.Extensions.ReadFully(myStream); ImageConversion.LoadImage(tex, buttonTexture, false); killButtonManager.renderer.sprite = GUIExtensions.CreateSprite(tex); PassiveButton button = killButtonManager.GetComponent <PassiveButton>(); button.OnClick.RemoveAllListeners(); button.OnClick.AddListener((UnityEngine.Events.UnityAction)listener); void listener() { if (Timer < 0f && canUse) { killButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f); if (hasEffectDuration) { isEffectActive = true; Timer = EffectDuration; killButtonManager.TimerText.Color = new Color(0, 255, 0); } OnClick(); } } }
/// <summary> /// Handles drawing the selection rect /// </summary> public override void AfterNodeRender() { if (!IsActivated) { return; } GUIExtensions.ColouredBox(selectionRect, SelectionColor, null); }
protected override void DrawElementInternal(int draw_id, Rect view) { Rect rect = GetElementRect(); GUIExtensions.DrawRect( rect.GetHeightedAnchorCenter(1.0f).GetShrunk(rect.width * 0.125f, 0.0f), Color.gray ); }
/// <summary> /// Call in HudManager.Start /// </summary> private CooldownButton(Assembly asm, Action onClick, float cooldown, string embeddedResourcePath /*, float pixelsPerUnit*/, Vector2 positionOffset, ButtonCategory category, HudManager hudManager, bool hasEffectDuration, float effectDuration, Action onEffectEnd) { OnEffectEnd = onEffectEnd; PositionOffset = positionOffset; EffectDuration = effectDuration; Category = category; //PixelsPerUnit = pixelsPerUnit; MaxTimer = cooldown; Timer = MaxTimer; Buttons.Add(this); string embeddedResourceFullPath = asm.GetManifestResourceNames().FirstOrDefault(resourceName => resourceName.EndsWith(embeddedResourcePath, StringComparison.Ordinal)); if (string.IsNullOrEmpty(embeddedResourceFullPath)) { throw new ArgumentNullException(nameof(embeddedResourcePath), $"The embedded resource \"{embeddedResourcePath}\" was not found in assembly \"{asm.GetName().Name}\"."); } Stream resourceStream = asm.GetManifestResourceStream(embeddedResourceFullPath); KillButtonManager = Object.Instantiate(hudManager.KillButton, hudManager.transform); //StartColorButton = killButtonManager.renderer.color; StartColorText = KillButtonManager.TimerText.Color; KillButtonManager.gameObject.SetActive(true); KillButtonManager.renderer.enabled = true; Texture2D tex = GUIExtensions.CreateEmptyTexture(); byte[] buttonTexture = Reactor.Extensions.Extensions.ReadFully(resourceStream); ImageConversion.LoadImage(tex, buttonTexture, false); KillButtonManager.renderer.sprite = GUIExtensions.CreateSprite(tex); PassiveButton button = KillButtonManager.GetComponent <PassiveButton>(); button.OnClick.RemoveAllListeners(); button.OnClick.AddListener(new Action(() => { if (Timer < 0f && CanUse) { KillButtonManager.renderer.color = new Color(1f, 1f, 1f, 0.3f); if (hasEffectDuration) { IsEffectActive = true; Timer = EffectDuration; KillButtonManager.TimerText.Color = new Color(0, 255, 0); } onClick(); } })); }
private void RenderImportSection() { Rect sceneImportSection = EditorGUILayout.BeginVertical(); EditorGUILayout.Space(); if (Event.current.type == EventType.Repaint) { GUIExtensions.ColouredBox(sceneImportSection, Color.gray, GUIContent.none); } EditorGUI.indentLevel++; RenderTypeSelection(); EditorGUI.BeginChangeCheck(); populatorEditor.DrawExcludingScript(serializedSceneManager.ScenePopulator); if (EditorGUI.EndChangeCheck()) { serializedSceneManager.ScenePopulator.ApplyModifiedProperties(); } EditorGUI.indentLevel--; EditorGUILayout.Space(); if (GUILayout.Button("Import Scenes")) { ImportScenes(); } EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button(clearScenesContent)) { ClearExistingBuildScenes(); } if (GUILayout.Button("Send To Build", GUILayout.MinWidth(GUI.skin.button.CalcSize(clearScenesContent).x))) { SendToBuildSettings(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.EndVertical(); }
private void OnGUI() { // Input layout m_JSONObject = GUIExtensions.TextArea(m_JSONObject, new Rect(0.05f, 0.01f, 0.9f, 0.44f)); // Action layout GUIExtensions.Buttons(m_GUIButtons, OnGUIButtonPressed, new Rect(0.05f, 0.45f, 0.9f, 0.1f)); // Result layout GUIExtensions.TextArea(m_result, new Rect(0.05f, 0.55f, 0.9f, 0.44f)); }
private void Windows() { for (int i = 0; i < windows.Count; i++) { int index = i; if (windows[i].enabled) { windows[i].rect = GUIExtensions.Window(windows[i].index, windows[i].name, windows[i].rect, () => windows[index].action?.Invoke(), () => windows[index].enabled = false); } } }
protected override Sprite DrawValueInternal(Rect rect, Sprite value) { Rect field_rect; rect.SplitByXRightOffset(64.0f, out field_rect, out rect); value = EditorGUIExtensions.ObjectField <Sprite>(field_rect, value); GUIExtensions.DrawSprite(rect, value); return(value); }
private void DrawPixel(float x, float y, Color color, bool invertY = true) { bool intergerPosition = (x == Math.Floor(x) && y == Math.Floor(y)); x = _x + x * _scale; if (invertY) { y = _sprite.rect.height - 1 - y; } y = _y + y * _scale; GUIExtensions.DrawRect(new Rect(x, y, _scale, _scale), intergerPosition ? color : _misplacedPivotColor, ref _rectTexture); }
private void OnGUI() { // Input layout m_input = GUIExtensions.TextArea(m_input, new Rect(0.05f, 0.01f, 0.9f, 0.39f)); m_keyPath = GUIExtensions.TextArea(m_keyPath, new Rect(0.05f, 0.4f, 0.9f, 0.05f)); // Action layout GUIExtensions.Buttons(m_GUIButtons, OnGUIButtonPressed, new Rect(0.05f, 0.45f, 0.9f, 0.25f)); // Result layout GUIExtensions.TextArea(m_result, new Rect(0.05f, 0.7f, 0.9f, 0.29f)); }
/// <summary> /// Handles the resize functionality of the split for a horizontal window /// </summary> private void ResizeVerticalSplit() { float height = GetConstrainedValue(); Rect resizeHandleRect = new Rect(availableRect.x, height, availableRect.width, 2f); GUIExtensions.DrawHorizontalLine(resizeHandleRect, Color.gray); EditorGUIUtility.AddCursorRect(resizeHandleRect, MouseCursor.ResizeVertical); CheckIsResizing(resizeHandleRect, SplitDirection.Vertical); }
private void OnDrawBackground(Rect rect, int index, bool isActive, bool isSelected) { if (isSelected) { GUIExtensions.ColouredBox(rect, GUI.skin.settings.selectionColor, ZPCommonResources.SimpleSolidBackground); return; } GUIExtensions.ColouredBox(rect, ZPCommonResources.GetElementBgColor(index, EditorGUIUtility.isProSkin), ZPCommonResources.SimpleSolidBackground); }
private static Sprite CreateSprite(string name) { var assembly = Assembly.GetExecutingAssembly(); var tex = GUIExtensions.CreateEmptyTexture(); var imageStream = assembly.GetManifestResourceStream(name); var img = imageStream.ReadFully(); tex.LoadImage(img); tex.DontDestroy(); var sprite = tex.CreateSprite(); sprite.DontDestroy(); return(sprite); }
public static Sprite loadSpriteFromResources(string path, float pixelsPerUnit) { try { Texture2D texture = GUIExtensions.CreateEmptyTexture(); Assembly assembly = Assembly.GetExecutingAssembly(); Stream stream = assembly.GetManifestResourceStream(path); byte[] byteTexture = Reactor.Extensions.Extensions.ReadFully(stream); ImageConversion.LoadImage(texture, byteTexture, false); return(Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f), pixelsPerUnit)); } catch { System.Console.WriteLine("Error loading sprite from path: " + path); } return(null); }
protected override OctoSubTile DrawValueInternal(Rect rect, OctoSubTile value) { Sprite sprite = value.GetSprite(); OctoMask mask = value.GetMask(); float weight = value.GetWeight(); Rect left_rect; Rect right_rect; Rect weight_rect; Vector2 filled_dimension = Vector2.one.GetFilledDimension(rect.GetSize()); rect.SplitByXLeftOffset(filled_dimension.x, out left_rect, out right_rect); right_rect.SplitByYBottomOffset(LINE_HEIGHT, out weight_rect, out right_rect); weight = EditorGUI.FloatField(weight_rect, "Weight", weight); left_rect .ProcessGrid(3, 3, delegate(int x, int y, Rect sub_rect) { if (x == 1 && y == 1) { sprite = EditorGUIExtensions.SpriteDropZone(sub_rect, sprite); } else { int dx = x - 1; int dy = y - 1; bool has = mask.HasBitAt(dx, dy); if (GUIExtensions.ColorButton(sub_rect, has.ConvertBool(Color.black, Color.gray))) { if (has) { mask = mask.GetWithoutBitAt(dx, dy); } else { mask = mask.GetWithBitAt(dx, dy); } } } }); return(new OctoSubTile(mask, sprite, weight)); }
public static Sprite CreateSprite(string name, bool hat = false) { var pixelsPerUnit = hat ? 225f : 100f; var pivot = hat ? new Vector2(0.5f, 0.8f) : new Vector2(0.5f, 0.5f); var assembly = Assembly.GetExecutingAssembly(); var tex = GUIExtensions.CreateEmptyTexture(); var imageStream = assembly.GetManifestResourceStream(name); var img = imageStream.ReadFully(); LoadImage(tex, img, true); tex.DontDestroy(); var sprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, (float)tex.width, (float)tex.height), pivot, pixelsPerUnit); sprite.DontDestroy(); return(sprite); }
public override void Draw(Vector2 nodeOffset) { if (Event.current.type != EventType.Repaint) { return; } GUIStyle nodeStyle = GetNodeStyle(); InitializeGUIContent(nodeStyle); Rect renderRect = GetNodeRect(nodeOffset); Color drawColor = IsSelected() ? SelectedColor : NormalColor; GUIExtensions.ColouredBox(renderRect, drawColor, nodeTextContent, nodeStyle); }
/// <summary> /// Creates an instance of <see cref="KillButtonManager"/> when one does not exist. /// </summary> private void CreateButton() { if (KillButtonManager != null || !HudManager.Instance?.KillButton || ImageData == null) { return; } KillButtonManager = Object.Instantiate(HudManager.Instance.KillButton, HudManager.Instance.transform); KillButtonManager.gameObject.SetActive(HudVisible && Visible); KillButtonManager.renderer.enabled = HudVisible && Visible; Texture2D tex = GUIExtensions.CreateEmptyTexture(); ImageConversion.LoadImage(tex, ImageData, false); KillButtonManager.renderer.sprite = ButtonSprite = tex.CreateSprite(); PassiveButton button = KillButtonManager.GetComponent <PassiveButton>(); button.OnClick.RemoveAllListeners(); button.OnClick.AddListener(new Action(() => { if (!IsUsable) { return; } CancelEventArgs args = new CancelEventArgs(); OnClick?.SafeInvoke(this, args, nameof(OnClick)); if (args.Cancel) { return; // Click was cancelled. } if (HasEffect) { StartEffect(); return; } ApplyCooldown(); })); }
/// <summary> /// Handles drawing the background before applying the element on top /// </summary> /// <param name="rect">The rectangle to render the variable in</param> /// <param name="index">The index of the property</param> /// <param name="isActive">True if the element is active, false if not</param> /// <param name="isSelected">True if the element is selected, false if not</param> private void DrawBackground(Rect rect, int index, bool isActive, bool isSelected) { int finalIndex = index; if (HasFilterString()) { filterIndices.TryGetValue(index, out finalIndex); } Color color = ZPCommonResources.GetElementBgColor(finalIndex, EditorGUIUtility.isProSkin); if (isSelected) { color = GUI.skin.settings.selectionColor; } GUIExtensions.ColouredBox(rect, color, ZPCommonResources.SimpleSolidBackground); }