56 lines
1.7 KiB
C#
56 lines
1.7 KiB
C#
|
#if UNITY_2018_2_OR_NEWER
|
|||
|
#define NEW_PACKMAN
|
|||
|
|
|||
|
using System;
|
|||
|
using UnityEditor.PackageManager;
|
|||
|
using UnityEditor.PackageManager.UI;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
#if UNITY_2019_1_OR_NEWER
|
|||
|
using UnityEngine.UIElements;
|
|||
|
#else
|
|||
|
using UnityEngine.Experimental.UIElements;
|
|||
|
#endif
|
|||
|
|
|||
|
[UnityEditor.InitializeOnLoad]
|
|||
|
internal class SamplesLinkPackageManagerExtension : IPackageManagerExtension {
|
|||
|
VisualElement rootVisualElement;
|
|||
|
const string SAMPLEBUTTON_TEXT = "Download Asset Samples from Asset Store";
|
|||
|
const string ASSETSTORE_URL = "http://u3d.as/1wLg";
|
|||
|
const string TERRAIN_TOOLS_NAME = "com.unity.terrain-tools";
|
|||
|
|
|||
|
private Button samplesButton;
|
|||
|
private VisualElement parent;
|
|||
|
|
|||
|
public VisualElement CreateExtensionUI() {
|
|||
|
samplesButton = new Button();
|
|||
|
samplesButton.text = SAMPLEBUTTON_TEXT;
|
|||
|
samplesButton.clickable.clicked += () => Application.OpenURL(ASSETSTORE_URL);
|
|||
|
|
|||
|
return samplesButton;
|
|||
|
}
|
|||
|
|
|||
|
static SamplesLinkPackageManagerExtension() {
|
|||
|
PackageManagerExtensions.RegisterExtension(new SamplesLinkPackageManagerExtension());
|
|||
|
}
|
|||
|
|
|||
|
void IPackageManagerExtension.OnPackageSelectionChange(PackageInfo packageInfo) {
|
|||
|
// Prevent the button from rendering on other packages
|
|||
|
if (samplesButton.parent != null)
|
|||
|
parent = samplesButton.parent;
|
|||
|
|
|||
|
bool shouldRender = packageInfo?.name == TERRAIN_TOOLS_NAME;
|
|||
|
if (!shouldRender) {
|
|||
|
samplesButton.RemoveFromHierarchy();
|
|||
|
}
|
|||
|
else {
|
|||
|
parent.Add(samplesButton);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void IPackageManagerExtension.OnPackageAddedOrUpdated(PackageInfo packageInfo) {}
|
|||
|
|
|||
|
void IPackageManagerExtension.OnPackageRemoved(PackageInfo packageInfo) {}
|
|||
|
}
|
|||
|
|
|||
|
#endif
|