public HDUnlitSettingsView(HDUnlitMasterNode node) { m_Node = node; PropertySheet ps = new PropertySheet(); int indentLevel = 0; ps.Add(new PropertyRow(CreateLabel("Surface Type", indentLevel)), (row) => { row.Add(new EnumField(SurfaceType.Opaque), (field) => { field.value = m_Node.surfaceType; field.RegisterValueChangedCallback(ChangeSurfaceType); }); }); ++indentLevel; switch (m_Node.surfaceType) { case SurfaceType.Opaque: ps.Add(new PropertyRow(CreateLabel("Rendering Pass", indentLevel)), (row) => { var valueList = HDSubShaderUtilities.GetRenderingPassList(true, true); row.Add(new PopupField <HDRenderQueue.RenderQueueType>(valueList, HDRenderQueue.RenderQueueType.Opaque, HDSubShaderUtilities.RenderQueueName, HDSubShaderUtilities.RenderQueueName), (field) => { field.value = HDRenderQueue.GetOpaqueEquivalent(m_Node.renderingPass); field.RegisterValueChangedCallback(ChangeRenderingPass); }); }); break; case SurfaceType.Transparent: ps.Add(new PropertyRow(CreateLabel("Rendering Pass", indentLevel)), (row) => { Enum defaultValue; switch (m_Node.renderingPass) // Migration { default: //when deserializing without issue, we still need to init the default to something even if not used. case HDRenderQueue.RenderQueueType.Transparent: defaultValue = HDRenderQueue.TransparentRenderQueue.Default; break; case HDRenderQueue.RenderQueueType.PreRefraction: defaultValue = HDRenderQueue.TransparentRenderQueue.BeforeRefraction; break; } var valueList = HDSubShaderUtilities.GetRenderingPassList(false, true); row.Add(new PopupField <HDRenderQueue.RenderQueueType>(valueList, HDRenderQueue.RenderQueueType.Transparent, HDSubShaderUtilities.RenderQueueName, HDSubShaderUtilities.RenderQueueName), (field) => { field.value = HDRenderQueue.GetTransparentEquivalent(m_Node.renderingPass); field.RegisterValueChangedCallback(ChangeRenderingPass); }); }); break; default: throw new ArgumentException("Unknown SurfaceType"); } --indentLevel; if (m_Node.surfaceType == SurfaceType.Transparent) { ++indentLevel; ps.Add(new PropertyRow(CreateLabel("Blending Mode", indentLevel)), (row) => { row.Add(new EnumField(HDUnlitMasterNode.AlphaModeLit.Additive), (field) => { field.value = GetAlphaModeLit(m_Node.alphaMode); field.RegisterValueChangedCallback(ChangeBlendMode); }); }); m_SortPiorityField = new IntegerField(); ps.Add(new PropertyRow(CreateLabel("Sorting Priority", indentLevel)), (row) => { row.Add(m_SortPiorityField, (field) => { field.value = m_Node.sortPriority; field.RegisterValueChangedCallback(ChangeSortPriority); }); }); ps.Add(new PropertyRow(CreateLabel("Receive Fog", indentLevel)), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.transparencyFog.isOn; toggle.OnToggleChanged(ChangeTransparencyFog); }); }); ps.Add(new PropertyRow(CreateLabel("Distortion", indentLevel)), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.distortion.isOn; toggle.OnToggleChanged(ChangeDistortion); }); }); if (m_Node.distortion.isOn) { ++indentLevel; ps.Add(new PropertyRow(CreateLabel("Mode", indentLevel)), (row) => { row.Add(new EnumField(DistortionMode.Add), (field) => { field.value = m_Node.distortionMode; field.RegisterValueChangedCallback(ChangeDistortionMode); }); }); ps.Add(new PropertyRow(CreateLabel("Distortion Only", indentLevel)), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.distortionOnly.isOn; toggle.OnToggleChanged(ChangeDistortionOnly); }); }); ps.Add(new PropertyRow(CreateLabel("Depth Test", indentLevel)), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.distortionDepthTest.isOn; toggle.OnToggleChanged(ChangeDistortionDepthTest); }); }); --indentLevel; } --indentLevel; } ps.Add(new PropertyRow(new Label("Double-Sided")), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.doubleSided.isOn; toggle.OnToggleChanged(ChangeDoubleSided); }); }); ps.Add(new PropertyRow(CreateLabel("Alpha Clipping", indentLevel)), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.alphaTest.isOn; toggle.OnToggleChanged(ChangeAlphaTest); }); }); Add(ps); }
public HDUnlitSettingsView(HDUnlitMasterNode node) { m_Node = node; PropertySheet ps = new PropertySheet(); int indentLevel = 0; ps.Add(new PropertyRow(CreateLabel("Surface Type", indentLevel)), (row) => { row.Add(new EnumField(SurfaceType.Opaque), (field) => { field.value = m_Node.surfaceType; field.RegisterValueChangedCallback(ChangeSurfaceType); }); }); if (m_Node.surfaceType == SurfaceType.Transparent) { ++indentLevel; ps.Add(new PropertyRow(CreateLabel("Blending Mode", indentLevel)), (row) => { row.Add(new EnumField(HDUnlitMasterNode.AlphaModeLit.Additive), (field) => { field.value = GetAlphaModeLit(m_Node.alphaMode); field.RegisterValueChangedCallback(ChangeBlendMode); }); }); m_SortPiorityField = new IntegerField(); ps.Add(new PropertyRow(CreateLabel("Sorting Priority", indentLevel)), (row) => { row.Add(m_SortPiorityField, (field) => { field.value = m_Node.sortPriority; field.RegisterValueChangedCallback(ChangeSortPriority); }); }); ps.Add(new PropertyRow(CreateLabel("Receive Fog", indentLevel)), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.transparencyFog.isOn; toggle.OnToggleChanged(ChangeTransparencyFog); }); }); ps.Add(new PropertyRow(CreateLabel("Appear in Refraction", indentLevel)), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.drawBeforeRefraction.isOn; toggle.OnToggleChanged(ChangeDrawBeforeRefraction); }); }); ps.Add(new PropertyRow(CreateLabel("Distortion", indentLevel)), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.distortion.isOn; toggle.OnToggleChanged(ChangeDistortion); }); }); if (m_Node.distortion.isOn) { ++indentLevel; ps.Add(new PropertyRow(CreateLabel("Mode", indentLevel)), (row) => { row.Add(new EnumField(DistortionMode.Add), (field) => { field.value = m_Node.distortionMode; field.RegisterValueChangedCallback(ChangeDistortionMode); }); }); ps.Add(new PropertyRow(CreateLabel("Distortion Only", indentLevel)), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.distortionOnly.isOn; toggle.OnToggleChanged(ChangeDistortionOnly); }); }); ps.Add(new PropertyRow(CreateLabel("Depth Test", indentLevel)), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.distortionDepthTest.isOn; toggle.OnToggleChanged(ChangeDistortionDepthTest); }); }); --indentLevel; } --indentLevel; } ps.Add(new PropertyRow(new Label("Double-Sided")), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.doubleSided.isOn; toggle.OnToggleChanged(ChangeDoubleSided); }); }); ps.Add(new PropertyRow(CreateLabel("Alpha Clipping", indentLevel)), (row) => { row.Add(new Toggle(), (toggle) => { toggle.value = m_Node.alphaTest.isOn; toggle.OnToggleChanged(ChangeAlphaTest); }); }); Add(ps); }