diff --git a/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/ModelBase.cs b/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/ModelBase.cs
index f52ea1bf..458886af 100644
--- a/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/ModelBase.cs
+++ b/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/ModelBase.cs
@@ -319,7 +319,7 @@ public string GetID()
return _ID;
}
- internal virtual void SetUpObject(uint simobjectid)
+ public virtual void SetUpObject(uint simobjectid)
{
_ID = simobjectid.AsString();
_iID = simobjectid;
diff --git a/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/View.Creators/AbstractDynamicInstance.cs b/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/View.Creators/AbstractDynamicInstance.cs
new file mode 100644
index 00000000..441ffb09
--- /dev/null
+++ b/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/View.Creators/AbstractDynamicInstance.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Text;
+using WinterLeaf.Engine.Classes.Extensions;
+
+namespace WinterLeaf.Engine.Classes.View.Creators
+{
+ ///
+ ///
+ ///
+ public abstract class AbstractDynamicInstance
+ {
+ private readonly IDictionary mExpandoObject =
+ new ExpandoObject();
+ protected IDictionary mFieldsDictionary =
+ new Dictionary();
+
+ ///
+ ///
+ ///
+ public dynamic Dynamics
+ {
+ get { return mExpandoObject; }
+ }
+
+ protected IDictionary Fields
+ {
+ get { return mFieldsDictionary; }
+ }
+
+ ///
+ /// This will return the TorqueScript code that will be executed when Create is called.
+ ///
+ ///
+ public override string ToString()
+ {
+ StringBuilder result = new StringBuilder();
+ result.Append(")\r\n{\r\n");
+ foreach (KeyValuePair ele in mFieldsDictionary)
+ {
+ result.Append(ele.Key);
+ result.Append(" = ");
+ result.Append(ele.Value.ToString().Trim() != string.Empty ? ele.Value : "\"\"");
+ result.Append(";\r\n");
+ }
+ foreach (KeyValuePair ele in mExpandoObject)
+ {
+ result.Append(ele.Key);
+ result.Append(" = ");
+ result.Append(ele.Value.ToString().Trim() != string.Empty ? ele.Value : "\"\"");
+ result.Append(";\r\n");
+ }
+ result.Append("};\r\n");
+ return (result.ToString());
+ }
+ }
+}
diff --git a/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/View.Creators/FieldWrapper.cs b/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/View.Creators/FieldWrapper.cs
new file mode 100644
index 00000000..b8456c87
--- /dev/null
+++ b/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/View.Creators/FieldWrapper.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace WinterLeaf.Engine.Classes.View.Creators
+{
+ public class FieldWrapper : IEnumerable
+ {
+ private IDictionary mParentDictionary;
+ private string mName;
+
+ public void Set(ref IDictionary pDictionary, string pName)
+ {
+ mParentDictionary = pDictionary;
+ mName = pName;
+ }
+
+ public void Add(int arg1, T arg2)
+ {
+ mParentDictionary[mName + "[" + arg1 + "]"] = arg2.ToString();
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/View.Creators/ObjectInstance.cs b/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/View.Creators/ObjectInstance.cs
new file mode 100644
index 00000000..adddd8e0
--- /dev/null
+++ b/Templates/C#-Empty/Winterleaf.Engine.Omni/Classes/View.Creators/ObjectInstance.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WinterLeaf.Engine.Classes.View.Creators
+{
+ public enum ObjectType
+ {
+ Instance,
+ Datablock,
+ Singleton
+ }
+ ///
+ ///
+ ///
+ public class ObjectInstance : AbstractDynamicInstance
+ {
+ private string mInstanceName;
+ private string mClassName;
+ private ObjectType mObjectType;
+
+ public ObjectInstance(string pInstanceName, string pClassName, ObjectType pObjectType)
+ {
+ mClassName = pClassName;
+ mInstanceName = pInstanceName;
+ mObjectType = pObjectType;
+ }
+
+ ///
+ /// This will return the TorqueScript code that will be executed when Create is called.
+ ///
+ ///
+ public override string ToString()
+ {
+ StringBuilder result = new StringBuilder();
+ switch (mObjectType)
+ {
+ case ObjectType.Instance:
+ result.Append(" new ");
+ break;
+ case ObjectType.Datablock:
+ result.Append(" datablock ");
+ break;
+ case ObjectType.Singleton:
+ result.Append(" singleton ");
+ break;
+ }
+ result.Append(mClassName);
+ result.Append("(");
+ result.Append(mInstanceName);
+ result.Append(base.ToString());
+ return (result.ToString());
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static implicit operator ModelBase(ObjectInstance inst)
+ {
+ UInt32 r;
+ string id = Omni.self.Evaluate("return " + inst.ToString() + ";", true);
+ return UInt32.TryParse(id, out r) ? r : 0;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static implicit operator string(ObjectInstance inst)
+ {
+ return Omni.self.Evaluate("return " + inst.ToString() + ";", true);
+ }
+ }
+}
diff --git a/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/ModelBase.cs b/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/ModelBase.cs
index f52ea1bf..458886af 100644
--- a/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/ModelBase.cs
+++ b/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/ModelBase.cs
@@ -319,7 +319,7 @@ public string GetID()
return _ID;
}
- internal virtual void SetUpObject(uint simobjectid)
+ public virtual void SetUpObject(uint simobjectid)
{
_ID = simobjectid.AsString();
_iID = simobjectid;
diff --git a/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/View.Creators/AbstractDynamicInstance.cs b/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/View.Creators/AbstractDynamicInstance.cs
new file mode 100644
index 00000000..441ffb09
--- /dev/null
+++ b/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/View.Creators/AbstractDynamicInstance.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Text;
+using WinterLeaf.Engine.Classes.Extensions;
+
+namespace WinterLeaf.Engine.Classes.View.Creators
+{
+ ///
+ ///
+ ///
+ public abstract class AbstractDynamicInstance
+ {
+ private readonly IDictionary mExpandoObject =
+ new ExpandoObject();
+ protected IDictionary mFieldsDictionary =
+ new Dictionary();
+
+ ///
+ ///
+ ///
+ public dynamic Dynamics
+ {
+ get { return mExpandoObject; }
+ }
+
+ protected IDictionary Fields
+ {
+ get { return mFieldsDictionary; }
+ }
+
+ ///
+ /// This will return the TorqueScript code that will be executed when Create is called.
+ ///
+ ///
+ public override string ToString()
+ {
+ StringBuilder result = new StringBuilder();
+ result.Append(")\r\n{\r\n");
+ foreach (KeyValuePair ele in mFieldsDictionary)
+ {
+ result.Append(ele.Key);
+ result.Append(" = ");
+ result.Append(ele.Value.ToString().Trim() != string.Empty ? ele.Value : "\"\"");
+ result.Append(";\r\n");
+ }
+ foreach (KeyValuePair ele in mExpandoObject)
+ {
+ result.Append(ele.Key);
+ result.Append(" = ");
+ result.Append(ele.Value.ToString().Trim() != string.Empty ? ele.Value : "\"\"");
+ result.Append(";\r\n");
+ }
+ result.Append("};\r\n");
+ return (result.ToString());
+ }
+ }
+}
diff --git a/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/View.Creators/FieldWrapper.cs b/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/View.Creators/FieldWrapper.cs
new file mode 100644
index 00000000..b8456c87
--- /dev/null
+++ b/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/View.Creators/FieldWrapper.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace WinterLeaf.Engine.Classes.View.Creators
+{
+ public class FieldWrapper : IEnumerable
+ {
+ private IDictionary mParentDictionary;
+ private string mName;
+
+ public void Set(ref IDictionary pDictionary, string pName)
+ {
+ mParentDictionary = pDictionary;
+ mName = pName;
+ }
+
+ public void Add(int arg1, T arg2)
+ {
+ mParentDictionary[mName + "[" + arg1 + "]"] = arg2.ToString();
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/View.Creators/ObjectInstance.cs b/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/View.Creators/ObjectInstance.cs
new file mode 100644
index 00000000..adddd8e0
--- /dev/null
+++ b/Templates/C#-Full-Ded/Winterleaf.Engine.Omni/Classes/View.Creators/ObjectInstance.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WinterLeaf.Engine.Classes.View.Creators
+{
+ public enum ObjectType
+ {
+ Instance,
+ Datablock,
+ Singleton
+ }
+ ///
+ ///
+ ///
+ public class ObjectInstance : AbstractDynamicInstance
+ {
+ private string mInstanceName;
+ private string mClassName;
+ private ObjectType mObjectType;
+
+ public ObjectInstance(string pInstanceName, string pClassName, ObjectType pObjectType)
+ {
+ mClassName = pClassName;
+ mInstanceName = pInstanceName;
+ mObjectType = pObjectType;
+ }
+
+ ///
+ /// This will return the TorqueScript code that will be executed when Create is called.
+ ///
+ ///
+ public override string ToString()
+ {
+ StringBuilder result = new StringBuilder();
+ switch (mObjectType)
+ {
+ case ObjectType.Instance:
+ result.Append(" new ");
+ break;
+ case ObjectType.Datablock:
+ result.Append(" datablock ");
+ break;
+ case ObjectType.Singleton:
+ result.Append(" singleton ");
+ break;
+ }
+ result.Append(mClassName);
+ result.Append("(");
+ result.Append(mInstanceName);
+ result.Append(base.ToString());
+ return (result.ToString());
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static implicit operator ModelBase(ObjectInstance inst)
+ {
+ UInt32 r;
+ string id = Omni.self.Evaluate("return " + inst.ToString() + ";", true);
+ return UInt32.TryParse(id, out r) ? r : 0;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static implicit operator string(ObjectInstance inst)
+ {
+ return Omni.self.Evaluate("return " + inst.ToString() + ";", true);
+ }
+ }
+}
diff --git a/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/ModelBase.cs b/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/ModelBase.cs
index f52ea1bf..458886af 100644
--- a/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/ModelBase.cs
+++ b/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/ModelBase.cs
@@ -319,7 +319,7 @@ public string GetID()
return _ID;
}
- internal virtual void SetUpObject(uint simobjectid)
+ public virtual void SetUpObject(uint simobjectid)
{
_ID = simobjectid.AsString();
_iID = simobjectid;
diff --git a/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/View.Creators/AbstractDynamicInstance.cs b/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/View.Creators/AbstractDynamicInstance.cs
new file mode 100644
index 00000000..441ffb09
--- /dev/null
+++ b/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/View.Creators/AbstractDynamicInstance.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Text;
+using WinterLeaf.Engine.Classes.Extensions;
+
+namespace WinterLeaf.Engine.Classes.View.Creators
+{
+ ///
+ ///
+ ///
+ public abstract class AbstractDynamicInstance
+ {
+ private readonly IDictionary mExpandoObject =
+ new ExpandoObject();
+ protected IDictionary mFieldsDictionary =
+ new Dictionary();
+
+ ///
+ ///
+ ///
+ public dynamic Dynamics
+ {
+ get { return mExpandoObject; }
+ }
+
+ protected IDictionary Fields
+ {
+ get { return mFieldsDictionary; }
+ }
+
+ ///
+ /// This will return the TorqueScript code that will be executed when Create is called.
+ ///
+ ///
+ public override string ToString()
+ {
+ StringBuilder result = new StringBuilder();
+ result.Append(")\r\n{\r\n");
+ foreach (KeyValuePair ele in mFieldsDictionary)
+ {
+ result.Append(ele.Key);
+ result.Append(" = ");
+ result.Append(ele.Value.ToString().Trim() != string.Empty ? ele.Value : "\"\"");
+ result.Append(";\r\n");
+ }
+ foreach (KeyValuePair ele in mExpandoObject)
+ {
+ result.Append(ele.Key);
+ result.Append(" = ");
+ result.Append(ele.Value.ToString().Trim() != string.Empty ? ele.Value : "\"\"");
+ result.Append(";\r\n");
+ }
+ result.Append("};\r\n");
+ return (result.ToString());
+ }
+ }
+}
diff --git a/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/View.Creators/FieldWrapper.cs b/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/View.Creators/FieldWrapper.cs
new file mode 100644
index 00000000..b8456c87
--- /dev/null
+++ b/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/View.Creators/FieldWrapper.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace WinterLeaf.Engine.Classes.View.Creators
+{
+ public class FieldWrapper : IEnumerable
+ {
+ private IDictionary mParentDictionary;
+ private string mName;
+
+ public void Set(ref IDictionary pDictionary, string pName)
+ {
+ mParentDictionary = pDictionary;
+ mName = pName;
+ }
+
+ public void Add(int arg1, T arg2)
+ {
+ mParentDictionary[mName + "[" + arg1 + "]"] = arg2.ToString();
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/View.Creators/ObjectInstance.cs b/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/View.Creators/ObjectInstance.cs
new file mode 100644
index 00000000..adddd8e0
--- /dev/null
+++ b/Templates/C#-Full/Winterleaf.Engine.Omni/Classes/View.Creators/ObjectInstance.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WinterLeaf.Engine.Classes.View.Creators
+{
+ public enum ObjectType
+ {
+ Instance,
+ Datablock,
+ Singleton
+ }
+ ///
+ ///
+ ///
+ public class ObjectInstance : AbstractDynamicInstance
+ {
+ private string mInstanceName;
+ private string mClassName;
+ private ObjectType mObjectType;
+
+ public ObjectInstance(string pInstanceName, string pClassName, ObjectType pObjectType)
+ {
+ mClassName = pClassName;
+ mInstanceName = pInstanceName;
+ mObjectType = pObjectType;
+ }
+
+ ///
+ /// This will return the TorqueScript code that will be executed when Create is called.
+ ///
+ ///
+ public override string ToString()
+ {
+ StringBuilder result = new StringBuilder();
+ switch (mObjectType)
+ {
+ case ObjectType.Instance:
+ result.Append(" new ");
+ break;
+ case ObjectType.Datablock:
+ result.Append(" datablock ");
+ break;
+ case ObjectType.Singleton:
+ result.Append(" singleton ");
+ break;
+ }
+ result.Append(mClassName);
+ result.Append("(");
+ result.Append(mInstanceName);
+ result.Append(base.ToString());
+ return (result.ToString());
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static implicit operator ModelBase(ObjectInstance inst)
+ {
+ UInt32 r;
+ string id = Omni.self.Evaluate("return " + inst.ToString() + ";", true);
+ return UInt32.TryParse(id, out r) ? r : 0;
+ }
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static implicit operator string(ObjectInstance inst)
+ {
+ return Omni.self.Evaluate("return " + inst.ToString() + ";", true);
+ }
+ }
+}