Added _MainTex_ST UI

This commit is contained in:
ousttrue
2018-07-24 20:36:42 +09:00
parent b26e8883c7
commit 88a39d2086
3 changed files with 65 additions and 17 deletions

View File

@@ -52,11 +52,12 @@ namespace VRM
m_ValuesList = new ReorderableList(serializedObject, m_ValuesProp);
m_ValuesList.elementHeight = BlendShapeBindingHeight;
m_ValuesList.drawElementCallback =
(rect, index, isActive, isFocused) => {
(rect, index, isActive, isFocused) =>
{
var element = m_ValuesProp.GetArrayElementAtIndex(index);
rect.height -= 4;
rect.y += 2;
if(DrawBlendShapeBinding(rect, element, PreviewSceneManager))
if (DrawBlendShapeBinding(rect, element, PreviewSceneManager))
{
m_changed = true;
}
@@ -66,11 +67,12 @@ namespace VRM
m_MaterialValuesList = new ReorderableList(serializedObject, m_MaterialValuesProp);
m_MaterialValuesList.elementHeight = MaterialValueBindingHeight;
m_MaterialValuesList.drawElementCallback =
(rect, index, isActive, isFocused) => {
(rect, index, isActive, isFocused) =>
{
var element = m_MaterialValuesProp.GetArrayElementAtIndex(index);
rect.height -= 4;
rect.y += 2;
if(DrawMaterialValueBinding(rect, element, PreviewSceneManager))
if (DrawMaterialValueBinding(rect, element, PreviewSceneManager))
{
m_changed = true;
}
@@ -89,8 +91,9 @@ namespace VRM
m_changed = false;
EditorGUILayout.Space();
var previewSlider= EditorGUILayout.Slider("Preview Weight", m_previewSlider, 0, 1.0f);
if (previewSlider != m_previewSlider) {
var previewSlider = EditorGUILayout.Slider("Preview Weight", m_previewSlider, 0, 1.0f);
if (previewSlider != m_previewSlider)
{
m_previewSlider = previewSlider;
m_changed = true;
}
@@ -110,7 +113,7 @@ namespace VRM
serializedObject.ApplyModifiedProperties();
if (m_changed && PreviewSceneManager!=null)
if (m_changed && PreviewSceneManager != null)
{
PreviewSceneManager.Bake(m_target.Values, m_target.MaterialValues, m_previewSlider);
}
@@ -180,6 +183,8 @@ namespace VRM
{
y += height;
rect = new Rect(position.x, y, position.width, height);
// プロパティ名のポップアップ
int propIndex;
if (StringPopup(rect, property.FindPropertyRelative("ValueName"), materialItem.PropNames, out propIndex))
{
@@ -188,6 +193,7 @@ namespace VRM
if (propIndex >= 0)
{
// 有効なプロパティ名が選択された
var propItem = materialItem.PropMap[materialItem.PropNames[propIndex]];
{
switch (propItem.PropertyType)
@@ -205,6 +211,20 @@ namespace VRM
}
}
break;
case ShaderUtil.ShaderPropertyType.TexEnv:
{
property.FindPropertyRelative("BaseValue").vector4Value = propItem.DefaultValues;
// max
y += height;
rect = new Rect(position.x, y, position.width, height);
if (OffsetProp(rect, property.FindPropertyRelative("TargetValue")))
{
changed = true;
}
}
break;
}
}
}
@@ -285,5 +305,20 @@ namespace VRM
return false;
}
}
static bool OffsetProp(Rect rect, SerializedProperty prop)
{
var oldValue = prop.vector4Value;
var newValue = EditorGUI.Vector4Field(rect, prop.displayName, oldValue);
if (newValue != oldValue)
{
prop.vector4Value = newValue;
return true;
}
else
{
return false;
}
}
}
}

View File

@@ -45,15 +45,28 @@ namespace VRM
for (int i = 0; i < ShaderUtil.GetPropertyCount(material.shader); ++i)
{
var propType = ShaderUtil.GetPropertyType(material.shader, i);
if (propType == ShaderUtil.ShaderPropertyType.Color)
var name = ShaderUtil.GetPropertyName(material.shader, i);
switch (propType)
{
var name = ShaderUtil.GetPropertyName(material.shader, i);
item.PropMap.Add(name, new PropItem
{
PropertyType = propType,
DefaultValues = material.GetColor(name),
});
propNames.Add(name);
case ShaderUtil.ShaderPropertyType.Color:
item.PropMap.Add(name, new PropItem
{
PropertyType = propType,
DefaultValues = material.GetColor(name),
});
propNames.Add(name);
break;
case ShaderUtil.ShaderPropertyType.TexEnv:
name += "_ST";
item.PropMap.Add(name, new PropItem
{
PropertyType = propType,
DefaultValues = material.GetVector(name),
});
propNames.Add(name);
break;
}
}
item.PropNames = propNames.ToArray();

View File

@@ -42,7 +42,7 @@ namespace VRM
GameObject.DestroyImmediate(x.gameObject);
}
Debug.Log("new prefab. instanciate");
//Debug.Log("new prefab. instanciate");
// no previous instance detected, so now let's make a fresh one
// very important: this loads the PreviewInstance prefab and temporarily instantiates it into PreviewInstance
var go = GameObject.Instantiate(prefab,
@@ -95,7 +95,7 @@ namespace VRM
dst = new Material(src);
map.Add(src, dst);
Debug.LogFormat("add material {0}", src.name);
//Debug.LogFormat("add material {0}", src.name);
materialNames.Add(src.name);
m_materialMap.Add(src.name, MaterialItem.Create(dst));
}