Ejemplo n.º 1
0
    public static VisualElement CreateNewAssetEditorUI()
    {
        CreateInstance();
        VisualTreeAsset aAssetEditorAsset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>("Assets/Editor/UXML Files/AssetEditor.uxml");

        mInstance.mAssetEditorUI  = aAssetEditorAsset.CloneTree();
        mInstance.mSelectionField = mInstance.mAssetEditorUI.Q <ObjectField>("asset_field");
        mInstance.mTypeOfAsset    = mInstance.mAssetEditorUI.Q <EnumField>("asset_type");
        if (mInstance.mCurrentAssetData == null)
        {
            mInstance.mTypeOfAsset.Init(AssetMetaData.AssetType.None);
        }
        else
        {
            mInstance.mTypeOfAsset.Init(mInstance.mCurrentAssetData.mType);
        }
        mInstance.mTypeOfAsset.RegisterCallback <ChangeEvent <System.Enum> >((aEv) => mInstance.ActivateObjectFieldOfType((AssetMetaData.AssetType)aEv.newValue));
        if (mInstance.mCurrentAssetData != null)
        {
            mInstance.SetObjectFieldType((AssetMetaData.AssetType)mInstance.mTypeOfAsset.value);
            string aAssetPath = AssetDatabase.GUIDToAssetPath(mInstance.mCurrentAssetData.mGUID);
            mInstance.mSelectionField.value = AssetDatabase.LoadAssetAtPath(aAssetPath, AssetDatabase.GetMainAssetTypeAtPath(aAssetPath));
        }
        else
        {
            mInstance.mSelectionField.SetEnabled(false);
        }
        mInstance.mSelectionField.RegisterCallback <ChangeEvent <Object> >((aEv) => mInstance.SetSelectedObjectData(aEv.newValue));
        mInstance.mAssetEditorData = mInstance.mAssetEditorUI.Q <VisualElement>("asset_editor_data");
        mInstance.mObjectData      = mInstance.mAssetEditorData.Q <VisualElement>("asset_data");
        mInstance.mObjectData.Q <Button>("asset_meta_data").RegisterCallback <MouseUpEvent>(mInstance.SaveAsScriptableAsset);
        if (mInstance.mCurrentAssetData != null)
        {
            mInstance.mObjectData.Bind(new SerializedObject(mInstance.mCurrentAssetData));
        }
        else
        {
            mInstance.mAssetEditorData.Remove(mInstance.mObjectData);
        }
        return(mInstance.mAssetEditorUI);
    }