private void BuildLayout(ExpressionInfo controllerExpressionInfo) { var def = new AvatarDefinition(controllerExpressionInfo.AvatarDescriptor); IEnumerable <VrcParameterDefinition> parameters = def.Children.OfType <VrcParameterDefinition>(); foreach (VrcParameterDefinition parameterDefinition in parameters) { string parameter = parameterDefinition.Name; VisualElement row = _dataRow.InstantiateTemplate(_parameterList.contentContainer); row.Q("parameter").Add(ObjectHolder.CreateHolder(parameterDefinition, this)); foreach (AnimatorLayerDefinition l in GetLayers(def, parameter)) { if (!l.TryGetFirstParent(out AnimatorDefinition _)) { continue; } row.Q("layer").Add(ObjectHolder.CreateHolder(l, this)); } foreach (MotionDefinition m in GetMotions(def, parameter)) { if (m.Motion == null) { continue; } row.Q("misc").Add(ObjectHolder.CreateHolder(m, this)); } foreach (VrcParameterDriverDefinition d in GetDrivers(def, parameter)) { row.Q("misc").Add(ObjectHolder.CreateHolder(d, this)); } foreach (MenuControlDefinition m in GetMenuControls(def, parameter)) { if (!m.TryGetFirstParent(out MenuDefinition _)) { continue; } row.Q("menu").Add(ObjectHolder.CreateHolder(m, this)); } } }