feat: Modular Avatar Move Independently (#417)

This commit is contained in:
bd_ 2023-09-24 16:59:15 +09:00 committed by GitHub
parent cd6e018d47
commit f38eb55010
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 2541 additions and 80 deletions

View File

@ -38,8 +38,9 @@ namespace nadena.dev.modular_avatar.core.editor
if (_window != null) DestroyImmediate(_window);
}
private void OnDestroy()
protected virtual void OnDestroy()
{
base.OnDestroy();
if (_window != null) DestroyImmediate(_window);
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c4bd1da0ca9146e6b4ae77a50ff220f2
timeCreated: 1693723243

View File

@ -0,0 +1,22 @@
using UnityEngine.UIElements;
namespace nadena.dev.modular_avatar.core.editor
{
public class LanguageSwitcherElement : VisualElement
{
public new class UxmlFactory : UxmlFactory<LanguageSwitcherElement, UxmlTraits>
{
}
public new class UxmlTraits : VisualElement.UxmlTraits
{
}
public LanguageSwitcherElement()
{
// DropdownField is not supported in 2019...
var imgui = new IMGUIContainer(Localization.ShowLanguageUI);
Add(imgui);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 64e0386c532046ebb565034edca90efd
timeCreated: 1693731394

View File

@ -0,0 +1,130 @@
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEditor.UIElements;
using UnityEngine;
using UnityEngine.TestTools;
using UnityEngine.UIElements;
namespace nadena.dev.modular_avatar.core.editor
{
public class LogoElement : VisualElement
{
private const string LISTENER_REGISTERED = "ma--logo-listener-registered";
private static WeakHashSet<LogoElement> _activeLogos = new WeakHashSet<LogoElement>();
private static Dictionary<VisualElement, LogoElement> _logoDisplayNode
= null;
private VisualElement _inner;
private static void RegisterNode(LogoElement target)
{
if (_logoDisplayNode == null)
{
_logoDisplayNode = new Dictionary<VisualElement, LogoElement>();
EditorApplication.delayCall += () => { _logoDisplayNode = null; };
}
// [editor list] -> EditorElement (private) -> InspectorElement -> MAVisualElement -> Logo
VisualElement container = target;
while (container.parent != null && !(container is InspectorElement))
{
container = container.parent;
}
container = container.parent ?? container; // EditorElement
container = container.parent ?? container; // editor list
if (container.ClassListContains(LISTENER_REGISTERED)) return;
container.RegisterCallback<GeometryChangedEvent>(geom => { UpdateLogoDisplayNode(container); });
}
private static void UpdateLogoDisplayNode(VisualElement root)
{
// Now walk down to find the LogoElements. We only walk one level past an InspectorElement (and once into
// its child MAVisualElement) to avoid descending too deep into madness.
List<LogoElement> elements = new List<LogoElement>();
WalkTree(root);
var target = elements.FirstOrDefault(e => e.resolvedStyle.visibility == Visibility.Visible);
foreach (var elem in elements)
{
elem.LogoShown = (elem == target);
}
void WalkTree(VisualElement visualElement)
{
if (visualElement.resolvedStyle.visibility == Visibility.Hidden ||
visualElement.resolvedStyle.height < 0.5) return;
var isInspector = visualElement.GetType() == typeof(InspectorElement);
foreach (var child in visualElement.Children())
{
if (child is MAVisualElement maChild)
{
foreach (var node in child.Children())
{
if (node is LogoElement logo)
{
elements.Add(logo);
}
}
return;
}
else if (!isInspector)
{
WalkTree(child);
}
}
}
}
public LogoElement()
{
_inner = new VisualElement();
_inner.style.display = DisplayStyle.None;
_inner.style.flexDirection = FlexDirection.Row;
_inner.style.alignItems = Align.Center;
_inner.style.justifyContent = Justify.Center;
var image = new Image();
image.image = LogoDisplay.LOGO_ASSET;
image.style.width = new Length(LogoDisplay.ImageWidth(LogoDisplay.TARGET_HEIGHT), LengthUnit.Pixel);
image.style.height = new Length(LogoDisplay.TARGET_HEIGHT, LengthUnit.Pixel);
_inner.Add(image);
this.Add(_inner);
RegisterCallback<GeometryChangedEvent>(OnGeomChanged);
}
private void OnGeomChanged(GeometryChangedEvent evt)
{
// We should be in the visual tree now
if (parent == null) return;
RegisterNode(this);
UnregisterCallback<GeometryChangedEvent>(OnGeomChanged);
}
private bool _logoShown;
private bool LogoShown
{
get => _logoShown;
set
{
if (value == _logoShown) return;
_logoShown = value;
_inner.style.display = value ? DisplayStyle.Flex : DisplayStyle.None;
}
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 09c8e1f754e341deb85df120c45109d9
timeCreated: 1693723249

View File

@ -0,0 +1,78 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using nadena.dev.modular_avatar.core.editor;
using UnityEditor;
using UnityEngine.UIElements;
namespace nadena.dev.modular_avatar.core.editor
{
internal static class UXMLExtensions
{
private static Dictionary<Type, Action<VisualElement>> _localizers =
new Dictionary<Type, Action<VisualElement>>();
public static VisualElement Localize(this VisualTreeAsset asset)
{
var root = asset.CloneTree();
WalkTree(root);
return root;
}
private static void WalkTree(VisualElement elem)
{
var ty = elem.GetType();
GetLocalizationOperation(ty)(elem);
foreach (var child in elem.Children())
{
WalkTree(child);
}
}
private static Action<VisualElement> GetLocalizationOperation(Type ty)
{
if (!_localizers.TryGetValue(ty, out var action))
{
PropertyInfo m_label;
if (ty == typeof(Label))
{
m_label = ty.GetProperty("text");
}
else
{
m_label = ty.GetProperty("label");
}
if (m_label == null)
{
action = _elem => { };
}
else
{
action = elem =>
{
var cur_label = m_label.GetValue(elem) as string;
if (cur_label != null && cur_label.StartsWith("##"))
{
var key = cur_label.Substring(2);
var new_label = Localization.S(key);
var new_tooltip = Localization.S(key + ".tooltip");
m_label.SetValue(elem, new_label);
elem.tooltip = new_tooltip;
}
};
}
_localizers[ty] = action;
}
return action;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: eaa4c630b2ae442f8456b83ae880ca4b
timeCreated: 1693726694

View File

@ -0,0 +1,84 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.CompilerServices;
namespace nadena.dev.modular_avatar.core.editor
{
internal class WeakHashSet<T> : IEnumerable<T> where T : class
{
private Dictionary<int, List<WeakReference<T>>> _refs = new Dictionary<int, List<WeakReference<T>>>();
private int _amortCounter = 16;
public void Add(T t)
{
WeakReference<T> w = new WeakReference<T>(t);
int hash = RuntimeHelpers.GetHashCode(t);
if (!_refs.TryGetValue(hash, out var list))
{
list = new List<WeakReference<T>>();
_refs[hash] = list;
}
if (!list.Contains(w))
{
list.Add(w);
if (_amortCounter-- <= 0)
{
ClearDeadReferences();
}
}
}
private void ClearDeadReferences()
{
throw new NotImplementedException();
}
public void Remove(T t)
{
WeakReference<T> w = new WeakReference<T>(t);
int hash = RuntimeHelpers.GetHashCode(t);
if (_refs.TryGetValue(hash, out var list))
{
list.RemoveAll(elem => elem.TryGetTarget(out var target) && target == t);
}
}
public bool Contains(T t)
{
WeakReference<T> w = new WeakReference<T>(t);
int hash = RuntimeHelpers.GetHashCode(t);
if (_refs.TryGetValue(hash, out var list))
{
return list.Exists(elem => elem.TryGetTarget(out var target) && target == t);
}
return false;
}
public IEnumerator<T> GetEnumerator()
{
foreach (var list in _refs.Values)
{
foreach (var elem in list)
{
if (elem.TryGetTarget(out var target))
{
yield return target;
}
}
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2505c2e488e04a2caf3594fbb2e7bf94
timeCreated: 1693724469

View File

@ -7,7 +7,7 @@ namespace nadena.dev.modular_avatar.core.editor
internal static class LogoDisplay
{
internal static readonly Texture2D LOGO_ASSET;
private static float TARGET_HEIGHT => EditorStyles.label.lineHeight * 3;
internal static float TARGET_HEIGHT => EditorStyles.label.lineHeight * 3;
internal static float ImageWidth(float height)
{

View File

@ -1,7 +1,4 @@
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using UnityEditor;
using System.Reflection;
using UnityEditor.UIElements;
using UnityEngine.UIElements;
@ -9,73 +6,8 @@ namespace nadena.dev.modular_avatar.core.editor
{
// This class performs common setup for Modular Avatar editors, including ensuring that only one instance of the\
// logo is rendered per container.
internal abstract class MAEditorBase : Editor
public abstract class MAEditorBase : UnityEditor.Editor
{
private static Dictionary<VisualElement, MAVisualElement>
_logoDisplayNode = new Dictionary<VisualElement, MAVisualElement>();
private static void Cleanup()
{
_logoDisplayNode.Clear();
EditorApplication.update -= Cleanup;
}
private static MAVisualElement GetCachedLogoDisplayNode(VisualElement start)
{
while (start?.parent != null && start.GetType() != typeof(InspectorElement))
{
start = start.parent;
}
// Next one up is an EditorElement, followed by the container of all Editors
var container = start?.parent?.parent;
if (container == null) return null;
if (_logoDisplayNode.TryGetValue(container, out var elem)) return elem;
var node = FindLogoDisplayNode(container);
if (node != null) _logoDisplayNode[container] = node;
EditorApplication.update += Cleanup;
return node;
}
private static MAVisualElement FindLogoDisplayNode(VisualElement container)
{
// Now walk down to find the MAVisualElements. We only walk one level past an InspectorElement to avoid
// descending too deep into madness.
List<MAVisualElement> elements = new List<MAVisualElement>();
WalkTree(container);
return elements.FirstOrDefault(e => e.resolvedStyle.visibility == Visibility.Visible);
void WalkTree(VisualElement visualElement)
{
if (visualElement.resolvedStyle.visibility == Visibility.Hidden ||
visualElement.resolvedStyle.height < 0.5) return;
var isInspector = visualElement.GetType() == typeof(InspectorElement);
foreach (var child in visualElement.Children())
{
if (child is MAVisualElement maChild)
{
elements.Add(maChild);
return;
}
else if (!isInspector)
{
WalkTree(child);
}
}
}
}
private class MAVisualElement : VisualElement
{
}
private MAVisualElement _visualElement;
private bool _suppressOnceDefaultMargins;
@ -84,8 +16,25 @@ namespace nadena.dev.modular_avatar.core.editor
return null;
}
private void RebuildUI()
{
CreateInspectorGUI();
}
public sealed override VisualElement CreateInspectorGUI()
{
if (_visualElement == null)
{
_visualElement = new MAVisualElement();
Localization.OnLangChange += RebuildUI;
}
else
{
_visualElement.Clear();
}
_visualElement.Add(new LogoElement());
// CreateInspectorElementFromEditor does a bunch of extra setup that makes our inspector look a little bit
// nicer. In particular, the label column won't auto-size if we just use IMGUIElement, for some reason
@ -100,7 +49,6 @@ namespace nadena.dev.modular_avatar.core.editor
inner = m.Invoke(throwaway, new object[] {serializedObject, this, false}) as VisualElement;
}
_visualElement = new MAVisualElement();
_visualElement.Add(inner);
_suppressOnceDefaultMargins = innerIsImgui;
@ -116,16 +64,20 @@ namespace nadena.dev.modular_avatar.core.editor
public sealed override void OnInspectorGUI()
{
if (GetCachedLogoDisplayNode(_visualElement) == _visualElement)
{
LogoDisplay.DisplayLogo();
}
InspectorCommon.DisplayOutOfAvatarWarning(targets);
OnInnerInspectorGUI();
}
protected abstract void OnInnerInspectorGUI();
protected virtual void OnDestroy()
{
Localization.OnLangChange -= RebuildUI;
}
}
internal class MAVisualElement : VisualElement
{
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b85e8d1dabe3455aa0b7e710f0934a2e
timeCreated: 1693722009

View File

@ -0,0 +1,9 @@
<UXML xmlns:ui="UnityEngine.UIElements" xmlns:ma="nadena.dev.modular_avatar.core.editor">
<ui:VisualElement name="root-box">
<ui:VisualElement name="group-box">
<ui:Label name="top-label" text="##move_independently.group-header"/>
<ui:VisualElement name="group-container"/>
</ui:VisualElement>
<ma:LanguageSwitcherElement/>
</ui:VisualElement>
</UXML>

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 445447dbd5f94f9ca0e6a73b4744b412
timeCreated: 1693727339

View File

@ -0,0 +1,129 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using nadena.dev.modular_avatar.core.ArmatureAwase;
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
namespace nadena.dev.modular_avatar.core.editor
{
[CustomEditor(typeof(MAMoveIndependently))]
internal class MoveIndependentlyEditor : MAEditorBase
{
[SerializeField] private StyleSheet uss;
[SerializeField] private VisualTreeAsset uxml;
private TransformChildrenNode _groupedNodesElem;
protected override void OnInnerInspectorGUI()
{
throw new System.NotImplementedException();
}
protected override VisualElement CreateInnerInspectorGUI()
{
var root = uxml.Localize();
root.styleSheets.Add(uss);
var container = root.Q<VisualElement>("group-container");
MAMoveIndependently target = (MAMoveIndependently) this.target;
var grouped = (target.GroupedBones ?? Array.Empty<GameObject>())
.Select(obj => obj.transform)
.ToImmutableHashSet();
_groupedNodesElem = new TransformChildrenNode(target.transform, grouped);
_groupedNodesElem.AddToClassList("group-root");
container.Add(_groupedNodesElem);
_groupedNodesElem.OnChanged += () =>
{
Undo.RecordObject(target, "Toggle grouped nodes");
target.GroupedBones = _groupedNodesElem.Active().Select(t => t.gameObject).ToArray();
PrefabUtility.RecordPrefabInstancePropertyModifications(target);
};
return root;
}
private class TransformChildrenNode : VisualElement
{
private readonly Transform _transform;
private HashSet<TransformChildrenNode> _active = new HashSet<TransformChildrenNode>();
public Transform Transform => _transform;
public event Action OnChanged;
public IEnumerable<Transform> Active()
{
foreach (var child in _active)
{
yield return child.Transform;
foreach (var subChild in child.Active())
{
yield return subChild;
}
}
}
internal TransformChildrenNode(Transform transform, ICollection<Transform> enabled)
{
_transform = transform;
foreach (Transform child in transform)
{
var childRoot = new VisualElement();
Add(childRoot);
var toggleContainer = new VisualElement();
childRoot.Add(toggleContainer);
toggleContainer.AddToClassList("left-toggle");
var toggle = new Toggle();
toggleContainer.Add(toggle);
toggleContainer.Add(new Label(child.gameObject.name));
var childGroup = new VisualElement();
childRoot.Add(toggleContainer);
childRoot.Add(childGroup);
childGroup.AddToClassList("group-children");
TransformChildrenNode childNode = null;
Action<bool> setNodeState = newValue =>
{
if (childNode != null == newValue) return;
if (newValue)
{
childNode = new TransformChildrenNode(child, enabled);
_active.Add(childNode);
childNode.OnChanged += FireOnChanged;
childGroup.Add(childNode);
}
else
{
childGroup.Clear();
_active.Remove(childNode);
childNode = null;
}
FireOnChanged();
};
toggle.RegisterValueChangedCallback(ev => setNodeState(ev.newValue));
toggle.value = enabled.Contains(child);
setNodeState(toggle.value);
}
enabled = ImmutableHashSet<Transform>.Empty;
}
private void FireOnChanged()
{
OnChanged?.Invoke();
}
}
}
}

View File

@ -0,0 +1,13 @@
fileFormatVersion: 2
guid: 1a6b092858f949e8a4540f73244f6d30
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences:
- uss: {fileID: 7433441132597879392, guid: f6acca9e5ad360048ae15c13abe12644, type: 3}
- uxml: {fileID: 9197481963319205126, guid: 445447dbd5f94f9ca0e6a73b4744b412, type: 3}
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,36 @@
VisualElement {
}
#group-box {
margin-top: 4px;
margin-bottom: 4px;
padding: 4px;
border-width: 3px;
border-left-color: rgba(0, 1, 0, 0.2);
border-top-color: rgba(0, 1, 0, 0.2);
border-right-color: rgba(0, 1, 0, 0.2);
border-bottom-color: rgba(0, 1, 0, 0.2);
border-radius: 4px;
/* background-color: rgba(0, 0, 0, 0.1); */
}
#group-box > Label {
-unity-font-style: bold;
}
.group-root {
margin-top: 4px;
}
.group-root Toggle {
margin-left: 0;
}
.group-children {
padding-left: 10px;
}
.left-toggle {
display: flex;
flex-direction: row;
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f6acca9e5ad360048ae15c13abe12644
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
disableValidation: 0

View File

@ -162,5 +162,6 @@
"setup_outfit.err.no_avatar_descriptor": "No avatar descriptor found in {0} or its parents.",
"setup_outfit.err.no_animator": "Your avatar does not have an Animator component.",
"setup_outfit.err.no_hips": "Your avatar does not have a Hips bone. Setup Outfit only works on humanoid avatars.",
"setup_outfit.err.no_outfit_hips": "Unable to identify the Hips object for the outfit. Searched for objects containing the following names:"
"setup_outfit.err.no_outfit_hips": "Unable to identify the Hips object for the outfit. Searched for objects containing the following names:",
"move_independently.group-header": "Objects to move together"
}

View File

@ -160,5 +160,6 @@
"setup_outfit.err.no_avatar_descriptor": "「{}」とその親に、avatar descriptorが見つかりませんでした。",
"setup_outfit.err.no_animator": "アバターにAnimatorコンポーネントがありません。",
"setup_outfit.err.no_hips": "アバターにHipsボーンがありません。なお、Setup Outfitはヒューマイドアバター以外には対応していません。",
"setup_outfit.err.no_outfit_hips": "衣装のHipsボーンを発見できませんでした。以下の名前を含むボーンを探しました"
"setup_outfit.err.no_outfit_hips": "衣装のHipsボーンを発見できませんでした。以下の名前を含むボーンを探しました",
"move_independently.group-header": "一緒に動かすオブジェクト"
}

View File

@ -0,0 +1,166 @@
using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using VRC.SDKBase;
namespace nadena.dev.modular_avatar.core.ArmatureAwase
{
[ExecuteInEditMode]
//[AddComponentMenu("")]
[DisallowMultipleComponent]
class MAMoveIndependently : MonoBehaviour, IEditorOnly
{
private float EPSILON = 0.000001f;
private GameObject[] m_groupedBones;
public GameObject[] GroupedBones
{
get => m_groupedBones.Clone() as GameObject[];
set
{
m_groupedBones = value.Clone() as GameObject[];
OnValidate();
}
}
private Matrix4x4 _priorFrameState;
struct ChildState
{
internal Vector3 childLocalPos;
internal Quaternion childLocalRot;
internal Vector3 childLocalScale;
// The child world position, recorded when we first initialized (or after unexpected child movement)
internal Matrix4x4 childWorld;
}
private Dictionary<Transform, ChildState> _children = new Dictionary<Transform, ChildState>();
private HashSet<Transform> _excluded = new HashSet<Transform>();
void Awake()
{
hideFlags = HideFlags.DontSave;
}
// We need to reparent the TRS values of the children from our prior frame state to the current frame state.
// This is done by computing the world affine matrix for the child in the prior frame, then converting to
// a local affine matrix in the current frame.
private void OnValidate()
{
Debug.Log("=== OnValidate");
hideFlags = HideFlags.DontSave;
_excluded = new HashSet<Transform>();
if (m_groupedBones == null)
{
m_groupedBones = Array.Empty<GameObject>();
}
foreach (var grouped in m_groupedBones)
{
if (grouped != null)
{
_excluded.Add(grouped.transform);
}
}
_priorFrameState = transform.localToWorldMatrix;
_children.Clear();
CheckChildren();
}
HashSet<Transform> _observed = new HashSet<Transform>();
private void CheckChildren()
{
_observed.Clear();
CheckChildren(transform);
foreach (var obj in m_groupedBones)
{
CheckChildren(obj.transform);
}
// Remove any children that are no longer children
var toRemove = new List<Transform>();
foreach (var child in _children)
{
if (child.Key == null || !_observed.Contains(child.Key))
{
toRemove.Add(child.Key);
}
}
foreach (var child in toRemove)
{
_children.Remove(child);
}
}
private void CheckChildren(Transform parent)
{
foreach (Transform child in parent)
{
if (_excluded.Contains(child)) continue;
_observed.Add(child);
var localPosition = child.localPosition;
var localRotation = child.localRotation;
var localScale = child.localScale;
if (_children.TryGetValue(child, out var state))
{
var deltaPos = localPosition - state.childLocalPos;
var deltaRot = Quaternion.Angle(localRotation, state.childLocalRot);
var deltaScale = (localScale - state.childLocalScale).sqrMagnitude;
if (deltaPos.sqrMagnitude < EPSILON && deltaRot < EPSILON && deltaScale < EPSILON)
{
Matrix4x4 childNewLocal = parent.worldToLocalMatrix * state.childWorld;
Undo.RecordObject(child, Undo.GetCurrentGroupName());
child.localPosition = childNewLocal.MultiplyPoint(Vector3.zero);
child.localRotation = childNewLocal.rotation;
child.localScale = childNewLocal.lossyScale;
state.childLocalPos = child.localPosition;
state.childLocalRot = child.localRotation;
state.childLocalScale = child.localScale;
_children[child] = state;
continue;
}
}
Matrix4x4 childTRS = Matrix4x4.TRS(localPosition, localRotation, localScale);
state = new ChildState()
{
childLocalPos = localPosition,
childLocalRot = localRotation,
childLocalScale = localScale,
childWorld = parent.localToWorldMatrix * childTRS,
};
_children[child] = state;
}
}
void Update()
{
var deltaPos = transform.position - _priorFrameState.MultiplyPoint(Vector3.zero);
var deltaRot = Quaternion.Angle(_priorFrameState.rotation, transform.rotation);
var deltaScale = (transform.lossyScale - _priorFrameState.lossyScale).sqrMagnitude;
if (deltaPos.sqrMagnitude < EPSILON && deltaRot < EPSILON && deltaScale < EPSILON) return;
CheckChildren();
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a8d5b07828ba4eefb9acc305478369d0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: a8edd5bd1a0a64a40aa99cc09fb5f198, type: 3}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -187,6 +187,12 @@
"source": "embedded",
"dependencies": {}
},
"nadena.dev.av3-build-framework": {
"version": "file:nadena.dev.av3-build-framework",
"depth": 0,
"source": "embedded",
"dependencies": {}
},
"nadena.dev.modular-avatar": {
"version": "file:nadena.dev.modular-avatar",
"depth": 0,

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.UIElements.Debugger" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" />
<xs:import schemaLocation="UnityEditor.PackageManager.UI.xsd" namespace="UnityEditor.PackageManager.UI" />
<xs:import schemaLocation="UnityEditor.UIElements.xsd" namespace="UnityEditor.UIElements" />
<xs:import schemaLocation="UnityEditor.UIElements.Debugger.xsd" namespace="UnityEditor.UIElements.Debugger" />
</xs:schema>

View File

@ -0,0 +1,294 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.UIElements.Debugger" elementFormDefault="qualified" targetNamespace="UnityEditor.PackageManager.UI" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" />
<xs:complexType name="AlertType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Alert" substitutionGroup="engine:VisualElement" xmlns:q1="UnityEditor.PackageManager.UI" type="q1:AlertType" />
<xs:complexType name="ArrowToggleType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ArrowToggle" substitutionGroup="engine:VisualElement" xmlns:q2="UnityEditor.PackageManager.UI" type="q2:ArrowToggleType" />
<xs:complexType name="DropdownButtonType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="DropdownButton" substitutionGroup="engine:VisualElement" xmlns:q3="UnityEditor.PackageManager.UI" type="q3:DropdownButtonType" />
<xs:complexType name="LoadingSpinnerType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="LoadingSpinner" substitutionGroup="engine:VisualElement" xmlns:q4="UnityEditor.PackageManager.UI" type="q4:LoadingSpinnerType" />
<xs:complexType name="PackageDependenciesType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="PackageDependencies" substitutionGroup="engine:VisualElement" xmlns:q5="UnityEditor.PackageManager.UI" type="q5:PackageDependenciesType" />
<xs:complexType name="PackageDetailsType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="PackageDetails" substitutionGroup="engine:VisualElement" xmlns:q6="UnityEditor.PackageManager.UI" type="q6:PackageDetailsType" />
<xs:complexType name="PackageListType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="PackageList" substitutionGroup="engine:VisualElement" xmlns:q7="UnityEditor.PackageManager.UI" type="q7:PackageListType" />
<xs:complexType name="PackageManagerToolbarType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="PackageManagerToolbar" substitutionGroup="engine:VisualElement" xmlns:q8="UnityEditor.PackageManager.UI" type="q8:PackageManagerToolbarType" />
<xs:complexType name="PackageSampleListType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="PackageSampleList" substitutionGroup="engine:VisualElement" xmlns:q9="UnityEditor.PackageManager.UI" type="q9:PackageSampleListType" />
<xs:complexType name="PackageStatusBarType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="PackageStatusBar" substitutionGroup="engine:VisualElement" xmlns:q10="UnityEditor.PackageManager.UI" type="q10:PackageStatusBarType" />
<xs:complexType name="PackageToolbarType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="PackageToolbar" substitutionGroup="engine:VisualElement" xmlns:q11="UnityEditor.PackageManager.UI" type="q11:PackageToolbarType" />
<xs:complexType name="ProgressBarType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ProgressBar" substitutionGroup="engine:VisualElement" xmlns:q12="UnityEditor.PackageManager.UI" type="q12:ProgressBarType" />
<xs:complexType name="SplitViewType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="100" name="fixed-pane-initial-size" type="xs:int" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="SplitView" substitutionGroup="engine:VisualElement" xmlns:q13="UnityEditor.PackageManager.UI" type="q13:SplitViewType" />
<xs:complexType name="ScopedRegistriesSettingsType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ScopedRegistriesSettings" substitutionGroup="engine:VisualElement" xmlns:q14="UnityEditor.PackageManager.UI" type="q14:ScopedRegistriesSettingsType" />
</xs:schema>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.UIElements.Debugger" elementFormDefault="qualified" targetNamespace="UnityEditor.UIElements.Debugger" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" />
<xs:complexType name="EventTypeSelectFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="EventTypeSelectField" substitutionGroup="engine:VisualElement" type="EventTypeSelectFieldType" />
</xs:schema>

View File

@ -0,0 +1,887 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.UIElements.Debugger" elementFormDefault="qualified" targetNamespace="UnityEditor.UIElements" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="UnityEngine.UIElements.xsd" namespace="UnityEngine.UIElements" />
<xs:simpleType name="PropertyControl_value-type_Type">
<xs:restriction base="xs:string">
<xs:enumeration value="Long" />
<xs:enumeration value="Double" />
<xs:enumeration value="Int" />
<xs:enumeration value="Float" />
<xs:enumeration value="String" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="PropertyControlType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute name="value-type" type="editor:PropertyControl_value-type_Type" use="required" />
<xs:attribute default="" name="value" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="PropertyControl" substitutionGroup="engine:VisualElement" type="editor:PropertyControlType" />
<xs:complexType name="VisualSplitterType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="VisualSplitter" substitutionGroup="engine:VisualElement" type="editor:VisualSplitterType" />
<xs:complexType name="ToolbarType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Toolbar" substitutionGroup="engine:VisualElement" type="editor:ToolbarType" />
<xs:complexType name="ToolbarButtonType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ToolbarButton" substitutionGroup="engine:VisualElement" type="editor:ToolbarButtonType" />
<xs:complexType name="ToolbarToggleType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="false" name="value" type="xs:boolean" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ToolbarToggle" substitutionGroup="engine:VisualElement" type="editor:ToolbarToggleType" />
<xs:complexType name="ToolbarSpacerType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ToolbarSpacer" substitutionGroup="engine:VisualElement" type="editor:ToolbarSpacerType" />
<xs:complexType name="ToolbarMenuType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ToolbarMenu" substitutionGroup="engine:VisualElement" type="editor:ToolbarMenuType" />
<xs:complexType name="ToolbarSearchFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ToolbarSearchField" substitutionGroup="engine:VisualElement" type="editor:ToolbarSearchFieldType" />
<xs:complexType name="ToolbarPopupSearchFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ToolbarPopupSearchField" substitutionGroup="engine:VisualElement" type="editor:ToolbarPopupSearchFieldType" />
<xs:complexType name="ToolbarBreadcrumbsType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ToolbarBreadcrumbs" substitutionGroup="engine:VisualElement" type="editor:ToolbarBreadcrumbsType" />
<xs:complexType name="PropertyFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="PropertyField" substitutionGroup="engine:VisualElement" type="editor:PropertyFieldType" />
<xs:complexType name="InspectorElementType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Ignore" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="InspectorElement" substitutionGroup="engine:VisualElement" type="editor:InspectorElementType" />
<xs:complexType name="FloatFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="value" type="xs:float" use="optional" />
<xs:attribute default="false" name="readonly" type="xs:boolean" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="FloatField" substitutionGroup="engine:VisualElement" type="editor:FloatFieldType" />
<xs:complexType name="DoubleFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="value" type="xs:double" use="optional" />
<xs:attribute default="false" name="readonly" type="xs:boolean" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="DoubleField" substitutionGroup="engine:VisualElement" type="editor:DoubleFieldType" />
<xs:complexType name="IntegerFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="value" type="xs:int" use="optional" />
<xs:attribute default="false" name="readonly" type="xs:boolean" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="IntegerField" substitutionGroup="engine:VisualElement" type="editor:IntegerFieldType" />
<xs:complexType name="LongFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="value" type="xs:long" use="optional" />
<xs:attribute default="false" name="readonly" type="xs:boolean" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="LongField" substitutionGroup="engine:VisualElement" type="editor:LongFieldType" />
<xs:complexType name="CurveFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="CurveField" substitutionGroup="engine:VisualElement" type="editor:CurveFieldType" />
<xs:complexType name="ObjectFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="true" name="allow-scene-objects" type="xs:boolean" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ObjectField" substitutionGroup="engine:VisualElement" type="editor:ObjectFieldType" />
<xs:complexType name="ColorFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="RGBA(0.000, 0.000, 0.000, 1.000)" name="value" type="xs:string" use="optional" />
<xs:attribute default="true" name="show-eye-dropper" type="xs:boolean" use="optional" />
<xs:attribute default="true" name="show-alpha" type="xs:boolean" use="optional" />
<xs:attribute default="false" name="hdr" type="xs:boolean" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ColorField" substitutionGroup="engine:VisualElement" type="editor:ColorFieldType" />
<xs:complexType name="EnumFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="" name="type" type="xs:string" use="optional" />
<xs:attribute default="" name="value" type="xs:string" use="optional" />
<xs:attribute default="false" name="include-obsolete-values" type="xs:boolean" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="EnumField" substitutionGroup="engine:VisualElement" type="editor:EnumFieldType" />
<xs:complexType name="MaskFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="" name="choices" type="xs:string" use="optional" />
<xs:attribute default="0" name="value" type="xs:int" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="MaskField" substitutionGroup="engine:VisualElement" type="editor:MaskFieldType" />
<xs:complexType name="LayerMaskFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="" name="choices" type="xs:string" use="optional" />
<xs:attribute default="0" name="value" type="xs:int" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="LayerMaskField" substitutionGroup="engine:VisualElement" type="editor:LayerMaskFieldType" />
<xs:complexType name="LayerFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="value" type="xs:int" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="LayerField" substitutionGroup="engine:VisualElement" type="editor:LayerFieldType" />
<xs:complexType name="TagFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="" name="value" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="TagField" substitutionGroup="engine:VisualElement" type="editor:TagFieldType" />
<xs:complexType name="GradientFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="GradientField" substitutionGroup="engine:VisualElement" type="editor:GradientFieldType" />
<xs:complexType name="EnumFlagsFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="" name="type" type="xs:string" use="optional" />
<xs:attribute default="" name="value" type="xs:string" use="optional" />
<xs:attribute default="false" name="include-obsolete-values" type="xs:boolean" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="EnumFlagsField" substitutionGroup="engine:VisualElement" type="editor:EnumFlagsFieldType" />
<xs:complexType name="RectFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="x" type="xs:float" use="optional" />
<xs:attribute default="0" name="y" type="xs:float" use="optional" />
<xs:attribute default="0" name="w" type="xs:float" use="optional" />
<xs:attribute default="0" name="h" type="xs:float" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="RectField" substitutionGroup="engine:VisualElement" type="editor:RectFieldType" />
<xs:complexType name="Vector2FieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="x" type="xs:float" use="optional" />
<xs:attribute default="0" name="y" type="xs:float" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Vector2Field" substitutionGroup="engine:VisualElement" type="editor:Vector2FieldType" />
<xs:complexType name="Vector3FieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="x" type="xs:float" use="optional" />
<xs:attribute default="0" name="y" type="xs:float" use="optional" />
<xs:attribute default="0" name="z" type="xs:float" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Vector3Field" substitutionGroup="engine:VisualElement" type="editor:Vector3FieldType" />
<xs:complexType name="Vector4FieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="x" type="xs:float" use="optional" />
<xs:attribute default="0" name="y" type="xs:float" use="optional" />
<xs:attribute default="0" name="z" type="xs:float" use="optional" />
<xs:attribute default="0" name="w" type="xs:float" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Vector4Field" substitutionGroup="engine:VisualElement" type="editor:Vector4FieldType" />
<xs:complexType name="BoundsFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="cx" type="xs:float" use="optional" />
<xs:attribute default="0" name="cy" type="xs:float" use="optional" />
<xs:attribute default="0" name="cz" type="xs:float" use="optional" />
<xs:attribute default="0" name="ex" type="xs:float" use="optional" />
<xs:attribute default="0" name="ey" type="xs:float" use="optional" />
<xs:attribute default="0" name="ez" type="xs:float" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="BoundsField" substitutionGroup="engine:VisualElement" type="editor:BoundsFieldType" />
<xs:complexType name="RectIntFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="x" type="xs:int" use="optional" />
<xs:attribute default="0" name="y" type="xs:int" use="optional" />
<xs:attribute default="0" name="w" type="xs:int" use="optional" />
<xs:attribute default="0" name="h" type="xs:int" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="RectIntField" substitutionGroup="engine:VisualElement" type="editor:RectIntFieldType" />
<xs:complexType name="Vector2IntFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="x" type="xs:int" use="optional" />
<xs:attribute default="0" name="y" type="xs:int" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Vector2IntField" substitutionGroup="engine:VisualElement" type="editor:Vector2IntFieldType" />
<xs:complexType name="Vector3IntFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="x" type="xs:int" use="optional" />
<xs:attribute default="0" name="y" type="xs:int" use="optional" />
<xs:attribute default="0" name="z" type="xs:int" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Vector3IntField" substitutionGroup="engine:VisualElement" type="editor:Vector3IntFieldType" />
<xs:complexType name="BoundsIntFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="px" type="xs:int" use="optional" />
<xs:attribute default="0" name="py" type="xs:int" use="optional" />
<xs:attribute default="0" name="pz" type="xs:int" use="optional" />
<xs:attribute default="0" name="sx" type="xs:int" use="optional" />
<xs:attribute default="0" name="sy" type="xs:int" use="optional" />
<xs:attribute default="0" name="sz" type="xs:int" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="BoundsIntField" substitutionGroup="engine:VisualElement" type="editor:BoundsIntFieldType" />
<xs:complexType name="ProgressBarType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="0" name="low-value" type="xs:float" use="optional" />
<xs:attribute default="100" name="high-value" type="xs:float" use="optional" />
<xs:attribute default="" name="title" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ProgressBar" substitutionGroup="engine:VisualElement" type="editor:ProgressBarType" />
</xs:schema>

View File

@ -0,0 +1,525 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:editor="UnityEditor.UIElements" xmlns:engine="UnityEngine.UIElements" xmlns="UnityEditor.UIElements.Debugger" elementFormDefault="qualified" targetNamespace="UnityEngine.UIElements" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="UXMLType">
<xs:complexContent mixed="false">
<xs:restriction base="xs:anyType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="UXML" type="engine:UXMLType" />
<xs:simpleType name="VisualElement_picking-mode_Type">
<xs:restriction base="xs:string">
<xs:enumeration value="Position" />
<xs:enumeration value="Ignore" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="VisualElement_usage-hints_Type">
<xs:restriction base="xs:string">
<xs:enumeration value="None" />
<xs:enumeration value="DynamicTransform" />
<xs:enumeration value="GroupTransform" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="VisualElementType">
<xs:complexContent mixed="false">
<xs:restriction base="xs:anyType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="VisualElement" type="engine:VisualElementType" />
<xs:complexType name="IMGUIContainerType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="IMGUIContainer" substitutionGroup="engine:VisualElement" type="engine:IMGUIContainerType" />
<xs:complexType name="ImageType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Image" substitutionGroup="engine:VisualElement" type="engine:ImageType" />
<xs:complexType name="LabelType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Label" substitutionGroup="engine:VisualElement" type="engine:LabelType" />
<xs:complexType name="RepeatButtonType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:attribute default="0" name="delay" type="xs:long" use="optional" />
<xs:attribute default="0" name="interval" type="xs:long" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="RepeatButton" substitutionGroup="engine:VisualElement" type="engine:RepeatButtonType" />
<xs:simpleType name="ScrollView_mode_Type">
<xs:restriction base="xs:string">
<xs:enumeration value="Vertical" />
<xs:enumeration value="Horizontal" />
<xs:enumeration value="VerticalAndHorizontal" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="ScrollViewType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="Vertical" name="mode" type="engine:ScrollView_mode_Type" use="optional" />
<xs:attribute default="false" name="show-horizontal-scroller" type="xs:boolean" use="optional" />
<xs:attribute default="false" name="show-vertical-scroller" type="xs:boolean" use="optional" />
<xs:attribute default="20" name="horizontal-page-size" type="xs:float" use="optional" />
<xs:attribute default="20" name="vertical-page-size" type="xs:float" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ScrollView" substitutionGroup="engine:VisualElement" type="engine:ScrollViewType" />
<xs:simpleType name="Scroller_direction_Type">
<xs:restriction base="xs:string">
<xs:enumeration value="Horizontal" />
<xs:enumeration value="Vertical" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="ScrollerType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="0" name="low-value" type="xs:float" use="optional" />
<xs:attribute default="0" name="high-value" type="xs:float" use="optional" />
<xs:attribute default="Vertical" name="direction" type="engine:Scroller_direction_Type" use="optional" />
<xs:attribute default="0" name="value" type="xs:float" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Scroller" substitutionGroup="engine:VisualElement" type="engine:ScrollerType" />
<xs:simpleType name="Slider_direction_Type">
<xs:restriction base="xs:string">
<xs:enumeration value="Horizontal" />
<xs:enumeration value="Vertical" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="SliderType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="value" type="xs:float" use="optional" />
<xs:attribute default="0" name="low-value" type="xs:float" use="optional" />
<xs:attribute default="10" name="high-value" type="xs:float" use="optional" />
<xs:attribute default="0" name="page-size" type="xs:float" use="optional" />
<xs:attribute default="Horizontal" name="direction" type="engine:Slider_direction_Type" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Slider" substitutionGroup="engine:VisualElement" type="engine:SliderType" />
<xs:simpleType name="SliderInt_direction_Type">
<xs:restriction base="xs:string">
<xs:enumeration value="Horizontal" />
<xs:enumeration value="Vertical" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="SliderIntType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="value" type="xs:int" use="optional" />
<xs:attribute default="0" name="low-value" type="xs:int" use="optional" />
<xs:attribute default="10" name="high-value" type="xs:int" use="optional" />
<xs:attribute default="0" name="page-size" type="xs:int" use="optional" />
<xs:attribute default="Horizontal" name="direction" type="engine:SliderInt_direction_Type" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="SliderInt" substitutionGroup="engine:VisualElement" type="engine:SliderIntType" />
<xs:complexType name="MinMaxSliderType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="0" name="min-value" type="xs:float" use="optional" />
<xs:attribute default="10" name="max-value" type="xs:float" use="optional" />
<xs:attribute default="-3.402823E+38" name="low-limit" type="xs:float" use="optional" />
<xs:attribute default="3.402823E+38" name="high-limit" type="xs:float" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="MinMaxSlider" substitutionGroup="engine:VisualElement" type="engine:MinMaxSliderType" />
<xs:complexType name="ToggleType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="false" name="value" type="xs:boolean" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Toggle" substitutionGroup="engine:VisualElement" type="engine:ToggleType" />
<xs:complexType name="TextFieldType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="true" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="label" type="xs:string" use="optional" />
<xs:attribute default="" name="value" type="xs:string" use="optional" />
<xs:attribute default="-1" name="max-length" type="xs:int" use="optional" />
<xs:attribute default="false" name="password" type="xs:boolean" use="optional" />
<xs:attribute default="*" name="mask-character" type="xs:string" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:attribute default="false" name="readonly" type="xs:boolean" use="optional" />
<xs:attribute default="false" name="multiline" type="xs:boolean" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="TextField" substitutionGroup="engine:VisualElement" type="engine:TextFieldType" />
<xs:complexType name="TemplateContainerType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute name="template" type="xs:string" use="required" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="TemplateContainer" substitutionGroup="engine:VisualElement" type="engine:TemplateContainerType" />
<xs:complexType name="BoxType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Box" substitutionGroup="engine:VisualElement" type="engine:BoxType" />
<xs:complexType name="PopupWindowType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="PopupWindow" substitutionGroup="engine:VisualElement" type="engine:PopupWindowType" />
<xs:complexType name="ListViewType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="30" name="item-height" type="xs:int" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="ListView" substitutionGroup="engine:VisualElement" type="engine:ListViewType" />
<xs:complexType name="TreeViewType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="30" name="item-height" type="xs:int" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="TreeView" substitutionGroup="engine:VisualElement" type="engine:TreeViewType" />
<xs:complexType name="FoldoutType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:attribute default="true" name="value" type="xs:boolean" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Foldout" substitutionGroup="engine:VisualElement" type="engine:FoldoutType" />
<xs:complexType name="BindableElementType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="engine:VisualElement" />
</xs:sequence>
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="BindableElement" substitutionGroup="engine:VisualElement" type="engine:BindableElementType" />
<xs:complexType name="TextElementType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="TextElement" substitutionGroup="engine:VisualElement" type="engine:TextElementType" />
<xs:complexType name="ButtonType">
<xs:complexContent mixed="false">
<xs:restriction base="engine:VisualElementType">
<xs:attribute default="" name="name" type="xs:string" use="optional" />
<xs:attribute default="" name="view-data-key" type="xs:string" use="optional" />
<xs:attribute default="Position" name="picking-mode" type="engine:VisualElement_picking-mode_Type" use="optional" />
<xs:attribute default="" name="tooltip" type="xs:string" use="optional" />
<xs:attribute default="None" name="usage-hints" type="engine:VisualElement_usage-hints_Type" use="optional" />
<xs:attribute default="0" name="tabindex" type="xs:int" use="optional" />
<xs:attribute default="false" name="focusable" type="xs:boolean" use="optional" />
<xs:attribute default="" name="class" type="xs:string" use="optional" />
<xs:attribute default="" name="content-container" type="xs:string" use="optional" />
<xs:attribute default="" name="style" type="xs:string" use="optional" />
<xs:attribute default="" name="binding-path" type="xs:string" use="optional" />
<xs:attribute default="" name="text" type="xs:string" use="optional" />
<xs:anyAttribute processContents="lax" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="Button" substitutionGroup="engine:VisualElement" type="engine:ButtonType" />
</xs:schema>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:engine="UnityEngine.UIElements" targetNamespace="nadena.dev.modular_avatar.core.editor" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="LanguageSwitcherElement" type="engine:VisualElementType" />
</xs:schema>

View File

@ -0,0 +1,23 @@
import ReactPlayer from 'react-player'
# Move Independently
<ReactPlayer controls muted loop playsinline url='/img/move-independently.mp4' />
The Move Independently component allows you to move an object without affecting its children.
This component has no effect at runtime; it is purely for use in the editor.
## When should I use it?
This component is intended to be used when adjusting the fit of outfits on your avatar. You can, for example,
adjust the position of the hips object of the outfit without impacting the position of other objects.
## Grouping objects
By checking boxes under the "Objects to move together" field, you can create a group of objects that move together.
For example, you might move the hips and upper leg objects together, but leave the lower leg objects behind.
## Limitations
While this component supports scaling an object independently of its children, non-uniform scales (where the X, Y, and Z
scales are not all the same) are not fully supported, and may result in unexpected behavior.

View File

@ -0,0 +1,23 @@
import ReactPlayer from 'react-player'
# Move Independently
<ReactPlayer controls muted loop playsinline url='/img/move-independently.mp4' />
MA Move Independentlyというコンポーネントを使うと、子オブジェクトに影響を与えずにオブジェクトを移動させることができます。
このコンポーネントはランタイムでは何の効果もありません。エディターでのみ使用できます。
## いつ使うべきか
このコンポーネントは、アバターに衣装のフィットを調整する際に使用することを想定しています。例えば、
衣装のヒップオブジェクトの位置を調整しつつ、他のオブジェクトの位置に影響しないようにできます。
## オブジェクトをグループ化する
「一緒に動かすオブジェクト」欄のチェックボックスをオンにすることで、一緒に移動するオブジェクトのグループを作成できます。
例えば、HipsとUpper Legのオブジェクトを一緒に移動させ、Lower Legのオブジェクトをそのままにすることができます。
## 制限事項
子に影響を与えずにオブジェクトの大きさを調整することは対応していますが、XYZそれぞれのスケールが同じ出ない場合は
対応されず、変な挙動になることがあります。ご注意ください。

BIN
docs/static/img/move-independently.mp4 vendored Normal file

Binary file not shown.