本文整理汇总了C#中Behaviac.Design.Nodes.Node.GetDesignerProperties方法的典型用法代码示例。如果您正苦于以下问题:C# Node.GetDesignerProperties方法的具体用法?C# Node.GetDesignerProperties怎么用?C# Node.GetDesignerProperties使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Behaviac.Design.Nodes.Node
的用法示例。
在下文中一共展示了Node.GetDesignerProperties方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SaveNode
/// <summary>
/// Saves a node to the XML file.
/// </summary>
/// <param name="root">The XML node we want to attach the node to.</param>
/// <param name="node">The node we want to save.</param>
protected void SaveNode(XmlElement root, Node node) {
try {
// allow the node to process its attributes in preparation of the save
node.PreSave(_behavior);
// store the class we have to create when loading
XmlElement elem = _xmlfile.CreateElement("Node");
elem.SetAttribute("Class", node.GetType().FullName);
bool isPrefabInstance = !string.IsNullOrEmpty(node.PrefabName) && !node.IsPrefabDataDirty();
// save attributes
IList<DesignerPropertyInfo> properties = node.GetDesignerProperties();
for (int p = 0; p < properties.Count; ++p) {
if (!properties[p].Attribute.HasFlags(DesignerProperty.DesignerFlags.NoSave)) {
bool bDo = !isPrefabInstance || properties[p].Attribute.HasFlags(DesignerProperty.DesignerFlags.NotPrefabRelated);
if (bDo) {
if (bDo) {
elem.SetAttribute(properties[p].Property.Name, properties[p].GetSaveValue(node));
}
}
}
}
// append node to root
root.AppendChild(elem);
// save comment
if (node.CommentObject != null) {
XmlElement comment = _xmlfile.CreateElement("Comment");
properties = node.CommentObject.GetDesignerProperties();
for (int p = 0; p < properties.Count; ++p) {
if (!properties[p].Attribute.HasFlags(DesignerProperty.DesignerFlags.NoSave))
{ comment.SetAttribute(properties[p].Property.Name, properties[p].GetSaveValue(node.CommentObject)); }
}
elem.AppendChild(comment);
}
if (!isPrefabInstance) {
// save parameters
if (node.LocalVars != null) {
Debug.Check(node is Behavior || node is ReferencedBehavior) ;
SaveParameters(elem, node.LocalVars);
}
// save DescriptorRefs
if (node is Behavior) {
#if QUERY_EANBLED
Behavior b = node as Behavior;
SaveDescriptorRefs(elem, b);
#endif//#if QUERY_EANBLED
}
// save attachments
foreach(Attachments.Attachment attach in node.Attachments) {
XmlElement attelem = _xmlfile.CreateElement("Attachment");
attelem.SetAttribute("Class", attach.GetType().FullName);
// save attributes
properties = attach.GetDesignerProperties();
for (int p = 0; p < properties.Count; ++p) {
if (!properties[p].Attribute.HasFlags(DesignerProperty.DesignerFlags.NoSave))
{ attelem.SetAttribute(properties[p].Property.Name, properties[p].GetSaveValue(attach)); }
}
if (attach.LocalVars != null && attach.LocalVars.Count > 0) {
Debug.Check(attach is Attachments.Event);
SaveParameters(attelem, attach.LocalVars);
}
elem.AppendChild(attelem);
}
// save children if allowed. Disallowed for referenced behaviours.
if (node.SaveChildren) {
// save connectors
foreach(Nodes.Node.Connector connector in node.Connectors) {
// if we have no children to store we can skip the connector
if (connector.ChildCount < 1)
{ continue; }
XmlElement conn = _xmlfile.CreateElement("Connector");
conn.SetAttribute("Identifier", connector.Identifier);
elem.AppendChild(conn);
// save their children
for (int i = 0; i < connector.ChildCount; ++i)
{ SaveNode(conn, (Node)connector.GetChild(i)); }
}
//.........这里部分代码省略.........
示例2: ExportProperties
/// <summary>
/// Exports all the properties of a ode and assigns them.
/// </summary>
/// <param name="file">The file we are exporting to.</param>
/// <param name="nodeName">The name of the node we are setting the properties for.</param>
/// <param name="node">The node whose properties we are exporting.</param>
/// <param name="indent">The indent for the currently generated code.</param>
private void ExportProperties(BsonSerializer file, Node n) {
IList<DesignerPropertyInfo> properties = n.GetDesignerProperties();
file.WriteStartElement("properties");
foreach(DesignerPropertyInfo p in properties) {
// we skip properties which are not marked to be exported
if (p.Attribute.HasFlags(DesignerProperty.DesignerFlags.NoExport))
{ continue; }
object v = p.Property.GetValue(n, null);
bool bExport = !Plugin.IsExportArray(v); ;
if (bExport) {
// create the code which assigns the value to the node's property
//file.Write(string.Format("{0}\t{1}.{2} = {3};\r\n", indent, nodeName, properties[p].Property.Name, properties[p].GetExportValue(node)));
string propValue = p.GetExportValue(n);
if (propValue != string.Empty && propValue != "\"\"") {
WriteProperty(file, p, n);
}
}
}
if (n is Task) {
Task task = n as Task;
file.WriteAttributeString("IsHTN", task.IsHTN ? "true" : "false");
}
#if QUERY_EANBLED
Behavior b = n as Behavior;
if (b != null) {
this.ExportDescritorRefs(file, b);
}
#endif
file.WriteEndElement();
}
示例3: ExportProperties
/// <summary>
/// Exports all the properties of a ode and assigns them.
/// </summary>
/// <param name="file">The file we are exporting to.</param>
/// <param name="nodeName">The name of the node we are setting the properties for.</param>
/// <param name="node">The node whose properties we are exporting.</param>
/// <param name="indent">The indent for the currently generated code.</param>
private void ExportProperties(BsonSerializer file, Node n)
{
IList<DesignerPropertyInfo> properties = n.GetDesignerProperties();
file.WriteStartElement("properties");
foreach (DesignerPropertyInfo p in properties)
{
// we skip properties which are not marked to be exported
if (p.Attribute.HasFlags(DesignerProperty.DesignerFlags.NoExport))
continue;
bool bDo = true;
if (p.Attribute.HasFlags(DesignerProperty.DesignerFlags.BeValid))
{
object obj = p.Property.GetValue(n, null);
if (obj == null || obj.ToString() == "null_method")
{
bDo = false;
}
}
if (bDo)
{
// create the code which assigns the value to the node's property
//file.Write(string.Format("{0}\t{1}.{2} = {3};\r\n", indent, nodeName, properties[p].Property.Name, properties[p].GetExportValue(node)));
string propValue = p.GetExportValue(n);
if (propValue != string.Empty && propValue != "\"\"")
{
WriteProperty(file, p, n);
}
}
}
#if QUERY_EANBLED
Behavior b = n as Behavior;
if (b != null)
{
this.ExportDescritorRefs(file, b);
}
#endif
file.WriteEndElement();
}
示例4: setSubItems
private void setSubItems(Node node)
{
// Add all listed properties
IList<DesignerPropertyInfo> properties = node.GetDesignerProperties(DesignerProperty.SortByDisplayOrder);
for (int p = 0; p < properties.Count; ++p) {
DesignerProperty att = properties[p].Attribute;
if (att.Display == DesignerProperty.DisplayMode.List) {
object pValue = properties[p].Property.GetValue(node, null);
bool bDo = pValue != null;
if (bDo) {
AddSubItem(new SubItemProperty(node, properties[p].Property, att));
}
}
}
// Add all attachments
foreach(Attachment attach in node.Attachments) {
AddSubItem(attach.CreateSubItem());
}
}
示例5: setSubItems
private void setSubItems(Node node)
{
// Add all listed properties
IList<DesignerPropertyInfo> properties = node.GetDesignerProperties(DesignerProperty.SortByDisplayOrder);
for (int p = 0; p < properties.Count; ++p)
{
DesignerProperty att = properties[p].Attribute;
if (att.Display == DesignerProperty.DisplayMode.List)
{
bool bDo = true;
if (att.HasFlags(DesignerProperty.DesignerFlags.BeValid))
{
object obj = properties[p].Property.GetValue(node, null);
if (obj == null || obj.ToString() == "null_method")
{
bDo = false;
}
}
if (bDo)
{
AddSubItem(new SubItemProperty(node, properties[p].Property, att));
}
}
}
// Add all attachments
foreach (Attachment attach in node.Attachments)
{
AddSubItem(attach.CreateSubItem());
}
}