public static UIGradientPreview Create(CreateParams input) { GameObject go = new GameObject(input.widgetName); go.tag = "UICollider"; // Find the anchor of the parent if it is a UIElement Vector3 parentAnchor = Vector3.zero; if (input.parent) { UIElement elem = input.parent.gameObject.GetComponent <UIElement>(); if (elem) { parentAnchor = elem.Anchor; } } UIGradientPreview uiGradientWidget = go.AddComponent <UIGradientPreview>(); uiGradientWidget.relativeLocation = input.relativeLocation; uiGradientWidget.transform.parent = input.parent; uiGradientWidget.transform.localPosition = parentAnchor + input.relativeLocation; uiGradientWidget.transform.localRotation = Quaternion.identity; uiGradientWidget.transform.localScale = Vector3.one; uiGradientWidget.width = input.width; uiGradientWidget.height = input.height; uiGradientWidget.thickness = input.thickness; // TODO: put the mesh in a sub object to apply a transformation that wont perturb the base object. // Setup the Meshfilter MeshFilter meshFilter = go.GetComponent <MeshFilter>(); if (meshFilter != null) { Mesh[] meshes = Resources.LoadAll <Mesh>("Models/half_sphere"); Mesh theNewMesh = meshes[0]; meshFilter.sharedMesh = meshes[0]; Vector3 originalSize = meshFilter.sharedMesh.bounds.size; // 1.997, 1, 1.997 float sc = input.width / originalSize.x; // 0.06 = 0.12 / 1.997 //transform.localPosition = new Vector3(width / 2.0f, -height / 2.0f, 0.0f); uiGradientWidget.transform.localRotation = Quaternion.Euler(-90.0f, 0.0f, 180.0f); uiGradientWidget.transform.localScale = new Vector3(sc, sc / 2.0f, sc); uiGradientWidget.Anchor = Vector3.zero; BoxCollider coll = go.GetComponent <BoxCollider>(); if (coll != null) { Vector3 initColliderCenter = meshFilter.sharedMesh.bounds.center; Vector3 initColliderSize = meshFilter.sharedMesh.bounds.size; if (initColliderSize.z < UIElement.collider_min_depth_deep) { coll.center = new Vector3(initColliderCenter.x, initColliderCenter.y, UIElement.collider_min_depth_deep / 2.0f); coll.size = new Vector3(initColliderSize.x, initColliderSize.y, UIElement.collider_min_depth_deep); } else { coll.center = initColliderCenter; coll.size = initColliderSize; } coll.isTrigger = true; } } // Setup the MeshRenderer MeshRenderer meshRenderer = go.GetComponent <MeshRenderer>(); if (meshRenderer != null && input.material != null) { meshRenderer.sharedMaterial = Instantiate(input.material); meshRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; meshRenderer.renderingLayerMask = 1 << 1; // "LightLayer 1" } UIUtils.SetRecursiveLayer(go, "CameraHidden"); return(uiGradientWidget); }
public static GradientItem GenerateGradientItem(SkySettings sky) { GameObject root = new GameObject("GradientItem"); GradientItem gradientItem = root.AddComponent <GradientItem>(); root.layer = LayerMask.NameToLayer("CameraHidden"); // Set the item invisible in order to hide it while it is not added into // a list. We will activate it after it is added root.transform.localScale = Vector3.zero; // // Background Panel // UIPanel panel = UIPanel.Create(new UIPanel.CreatePanelParams { parent = root.transform, widgetName = "GradientPreviewBackgroundPanel", relativeLocation = new Vector3(0.01f, -0.01f, -UIPanel.default_element_thickness), width = 0.145f, height = 0.185f, margin = 0.005f }); panel.SetLightLayer(3); // // Gradient Button // UIGradientPreview gradientPreview = UIGradientPreview.Create(new UIGradientPreview.CreateParams { parent = panel.transform, widgetName = "GradientPreview", relativeLocation = new Vector3(0.0725f, -0.0725f, -UIGradientPreview.default_thickness), width = 0.12f, height = 0.12f, margin = 0.001f }); gradientPreview.SetLightLayer(3); gradientPreview.Colors = sky; gradientPreview.NeedsRebuild = true; // // Copy Button // UIButton copyButton = UIButton.Create(new UIButton.CreateButtonParams { parent = panel.transform, widgetName = "CopyButton", relativeLocation = new Vector3(0.075f, -0.15f, -UIButton.default_thickness), width = 0.03f, height = 0.03f, icon = UIUtils.LoadIcon("duplicate"), buttonContent = UIButton.ButtonContent.ImageOnly, margin = 0.001f, }); copyButton.SetLightLayer(3); // // Delete Button // UIButton deleteButton = UIButton.Create(new UIButton.CreateButtonParams { parent = panel.transform, widgetName = "DeleteButton", relativeLocation = new Vector3(0.11f, -0.15f, -UIButton.default_thickness), width = 0.03f, height = 0.03f, icon = UIUtils.LoadIcon("trash"), buttonContent = UIButton.ButtonContent.ImageOnly, margin = 0.001f, }); deleteButton.SetLightLayer(3); gradientItem.gradientPreview = gradientPreview; gradientItem.copyButton = copyButton; gradientItem.deleteButton = deleteButton; gradientItem.backgroundPanel = panel; return(gradientItem); }