Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
RenderPassPluginEnumerator.cs
Go to the documentation of this file.
1 using System.Collections.Generic;
2 using System.Reflection;
3 
4 using SiliconStudio.Paradox.Effects;
5 #if PARADOX_YEBIS
6 using Paradox.Effects.Yebis;
7 #endif
8 using SiliconStudio.Paradox.Games;
9 using SiliconStudio.Paradox.Games.Mathematics;
10 using SiliconStudio.Paradox.Games.ViewModel;
11 
12 namespace ScriptTest
13 {
15  {
16  public ViewModelContext SelectedRenderPassPluginContext { get; set; }
17 
18  public void GenerateChildren(ViewModelContext context, IViewModelNode viewModelNode, ref bool handled)
19  {
20  if (viewModelNode.NodeValue is RenderPassPlugin)
21  {
22  viewModelNode.Children.Add(new ViewModelNode("Name", new PropertyInfoViewModelContent(new ParentNodeValueViewModelContent(), typeof(ComponentBase).GetProperty("Name"))));
23  viewModelNode.Children.Add(new ViewModelNode("EventOpen", new RootViewModelContent((ExecuteCommand)((viewModel2, parameter) =>
24  {
25  SelectedRenderPassPluginContext.ViewModelByGuid.Clear();
26  //SelectedRenderPassPluginContext.Root = SelectedRenderPassPluginContext.GetModelView(viewModel2.Parent.NodeValue);
27  SelectedRenderPassPluginContext.Root = new ViewModelNode("Root", new RootViewModelContent(new[] { new ViewModelReference(viewModel2.Parent.NodeValue, true) }, typeof(IList<ViewModelReference>)));
28  //SelectedRenderPassPluginContext.GetModelView(viewModel2.Parent.NodeValue);
29  }))));
30 
31  handled = true;
32  }
33  }
34  }
36  {
37  public void GenerateChildren(ViewModelContext context, IViewModelNode viewModelNode, ref bool handled)
38  {
39  if (viewModelNode.NodeValue is RenderPassPlugin)
40  {
41  var pluginType = viewModelNode.NodeValue.GetType();
42 
43  foreach (var propertyInfo in pluginType.GetProperties(BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Instance))
44  {
45  IViewModelContent viewModelContent = new PropertyInfoViewModelContent(new ParentNodeValueViewModelContent(), propertyInfo);
46 
47  if (propertyInfo.PropertyType == typeof(RenderPass) || propertyInfo.PropertyType.IsSubclassOf(typeof(RenderPass)))
48  viewModelContent = LambdaViewModelContent<ViewModelReference>.FromOperand<RenderPass>(viewModelContent, x => new ViewModelReference(x, false));
49  else if (!propertyInfo.PropertyType.IsValueType || !propertyInfo.PropertyType.FullName.StartsWith("System."))
50  continue;
51 
52  viewModelNode.Children.Add(new ViewModelNode(propertyInfo.Name, viewModelContent));
53  }
54 
55 
56  foreach (var fieldinfo in pluginType.GetFields( BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Instance))
57  {
58  IViewModelContent viewModelContent = new FieldInfoViewModelContent(new ParentNodeValueViewModelContent(pluginType), fieldinfo);
59  //if (fieldinfo.FieldType.IsValueType && !fieldinfo.FieldType.IsPrimitive && !fieldinfo.FieldType.IsEnum)
60  // viewModelContent.Flags = ViewModelFlags.None;
61  viewModelNode.Children.Add(new ViewModelNode(fieldinfo.Name, viewModelContent).GenerateChildren(context));
62  }
63  }
64 #if PARADOX_YEBIS
65  else if (viewModelNode.Type.Namespace == typeof(ToneMap).Namespace
66  && viewModelNode.Type.IsValueType && !viewModelNode.Type.IsPrimitive && !viewModelNode.Type.IsEnum)
67  {
68  // Use default for those types
69  foreach (var fieldinfo in viewModelNode.Type.GetFields(BindingFlags.FlattenHierarchy | BindingFlags.Public | BindingFlags.Instance))
70  {
71  IViewModelContent viewModelContent = new FieldInfoViewModelContent(new ParentValueViewModelContent(viewModelNode.Type), fieldinfo);
72  //if (fieldinfo.FieldType.IsValueType && !fieldinfo.FieldType.IsPrimitive && !fieldinfo.FieldType.IsEnum)
73  // viewModelContent.Flags = ViewModelFlags.None;
74  // Doesn't support array
75  if (fieldinfo.FieldType.IsArray)
76  continue;
77  viewModelNode.Children.Add(new ViewModelNode(fieldinfo.Name, viewModelContent).GenerateChildren(context));
78  }
79  }
80 #endif
81  }
82  }
83 }
void GenerateChildren(ViewModelContext context, IViewModelNode viewModelNode, ref bool handled)
void GenerateChildren(ViewModelContext context, IViewModelNode viewModelNode, ref bool handled)
RenderPass is a hierarchy that defines how to collect and render meshes.
Definition: RenderPass.cs:19