コード例 #1
0
 // Function to return a list of data
 public List <T> getData <T>()
 {
     if (dataSourceType == WMG_DataSourceTypes.Multiple_Objects_Single_Variable)
     {
         List <T> returnVals = new List <T>();
         foreach (object dp in dataProviders)
         {
             returnVals.Add(getDatum <T>(dp, variableName, variableType, varName1, varName2));
         }
         return(returnVals);
     }
     else if (dataSourceType == WMG_DataSourceTypes.Single_Object_Multiple_Variables)
     {
         List <T> returnVals = new List <T>();
         for (int i = 0; i < variableNames.Count; i++)
         {
             string            varName = variableNames[i];
             WMG_VariableTypes varType = WMG_VariableTypes.Not_Specified;
             if (i < variableTypes.Count)
             {
                 varType = variableTypes[i];
             }
             if (i >= varNames1.Count)
             {
                 parseStrings();                                       // strings added to list through the Unity editor at run-time, or set / add variableName API not used
             }
             returnVals.Add(getDatum <T>(dataProvider, varName, varType, varNames1[i], varNames2[i]));
         }
         return(returnVals);
     }
     else if (dataSourceType == WMG_DataSourceTypes.Single_Object_Single_Variable)
     {
         try {             // try field, e.g. public List<Vector2> test;
             return((List <T>)WMG_Reflection.GetField(dataProvider.GetType(), variableName).GetValue(dataProvider));
         }
         catch (Exception e) {
             GlobalVariableBackground.Instance.conManager.WriteLog("Field: " + variableName + " not found. " + e.Message);
             return(new List <T>());
         }
     }
     return(new List <T>());
 }
コード例 #2
0
 T getDatum <T>(object dp, string variableName, WMG_VariableTypes varType, string vName1, string vName2)
 {
     if (varType == WMG_VariableTypes.Field)
     {
         try {             // try field, e.g. public float test;
             return((T)WMG_Reflection.GetField(dp.GetType(), variableName).GetValue(dp));
         }
         catch (Exception e) {
             GlobalVariableBackground.Instance.conManager.WriteLog("Field: " + variableName + " not found. " + e.Message);
             return(default(T));
         }
     }
     else if (varType == WMG_VariableTypes.Property)
     {
         try {             // try property, e.g. public float Test {get; private set};
             return((T)WMG_Reflection.GetProperty(dp.GetType(), variableName).GetValue(dp, null));
         }
         catch (Exception e) {
             GlobalVariableBackground.Instance.conManager.WriteLog("Property: " + variableName + " not found. " + e.Message);
             return(default(T));
         }
     }
     else if (varType == WMG_VariableTypes.Property_Field)
     {
         try {             // try property.field, e.g. localPosition.y from a Transform dataProvider
             object dpProperty = WMG_Reflection.GetProperty(dp.GetType(), vName1).GetValue(dp, null);
             return((T)WMG_Reflection.GetField(dpProperty.GetType(), vName2).GetValue(dpProperty));
         }
         catch (Exception e) {
             GlobalVariableBackground.Instance.conManager.WriteLog("property.field: " + variableName + " not found. " + e.Message);
             return(default(T));
         }
     }
     else if (varType == WMG_VariableTypes.Field_Field)
     {
         try {             // try field.field, e.g. test.y from public Vector3 test;
             object dpField = WMG_Reflection.GetField(dp.GetType(), vName1).GetValue(dp);
             return((T)WMG_Reflection.GetField(dpField.GetType(), vName2).GetValue(dpField));
         }
         catch (Exception e) {
             GlobalVariableBackground.Instance.conManager.WriteLog("field.field: " + variableName + " not found. " + e.Message);
             return(default(T));
         }
     }
     else if (varType == WMG_VariableTypes.Not_Specified)
     {
         try {             // try field, e.g. public float test;
             return((T)WMG_Reflection.GetField(dp.GetType(), variableName).GetValue(dp));
         }
         catch {
             try {                 // try property, e.g. public float Test {get; private set};
                 return((T)WMG_Reflection.GetProperty(dp.GetType(), variableName).GetValue(dp, null));
             }
             catch {
                 try {                     // try property.field, e.g. localPosition.y from a Transform dataProvider
                     object dpProperty = WMG_Reflection.GetProperty(dp.GetType(), vName1).GetValue(dp, null);
                     return((T)WMG_Reflection.GetField(dpProperty.GetType(), vName2).GetValue(dpProperty));
                 }
                 catch {                     // try field.field, e.g. test.y from public Vector3 test;
                     try {
                         object dpField = WMG_Reflection.GetField(dp.GetType(), varName1).GetValue(dp);
                         return((T)WMG_Reflection.GetField(dpField.GetType(), vName2).GetValue(dpField));
                     }
                     catch (Exception e) {
                         GlobalVariableBackground.Instance.conManager.WriteLog("field, property, property.field, or field.field: " + variableName + " not found. " + e.Message);
                         return(default(T));
                     }
                 }
             }
         }
     }
     return(default(T));
 }