public ScriptableObject _New(Type type, string scope = "") { string typeString = type.ToString(); BindMap bindmap = null; ScriptableObject returnSO; if (System.Array.Exists <BindMap>(injectMap.bind, (BindMap b) => b.bind.Equals(typeString) && b.scope.Equals(scope))) { bindmap = System.Array.Find <BindMap>(injectMap.bind, (BindMap b) => b.bind.Equals(typeString) && b.scope.Equals(scope)); } if (bindmap != null) { Log(string.Format("bind {0} to {1}", bindmap.bind, bindmap.to)); returnSO = ScriptableObject.CreateInstance(bindmap.to); //Inject into member _Inject(returnSO); return(returnSO); } else { logger.LogErrorFormat("Binding map doesn't set corresponding name to {0}, scope {1}.", typeString, scope); return(null); // throw new Exception("Binding map doesn't set corresponding name to " + typeString); } }
public void _Read(string settings) { if (string.IsNullOrEmpty(settings)) { return; } InjectMap outsideSettings = parser.Parse <InjectMap>(settings); foreach (BindMap bindMapCurr in injectMap.bind) { // If there hasn't setting, leave loop. if (outsideSettings.bind == null) { break; } BindMap bindMapNew = null; bindMapNew = Array.Find( outsideSettings.bind, (BindMap bm) => bm.bind.Equals(bindMapCurr.bind) ); if (bindMapNew != null) { bindMapCurr.to = String.Copy(bindMapNew.to); } } foreach (PrimitiveMap primitiveMapCurr in injectMap.primitive) { // If there hasn't setting, leave loop. if (outsideSettings.primitive == null) { break; } PrimitiveMap primitiveMapNew = null; primitiveMapNew = Array.Find( outsideSettings.primitive, (PrimitiveMap pm) => pm.fieldPath.Equals(primitiveMapCurr.fieldPath) ); if (primitiveMapNew != null) { primitiveMapCurr.fieldValue = String.Copy(primitiveMapNew.fieldValue); } } foreach (PrimitiveArrayMap primitiveArrayMapCurr in injectMap.primitiveArray) { // If there hasn't setting, leave loop. if (outsideSettings.primitiveArray == null) { break; } PrimitiveArrayMap PrimitiveArrayMapNew = null; PrimitiveArrayMapNew = Array.Find( outsideSettings.primitiveArray, (PrimitiveArrayMap pam) => pam.fieldPath.Equals(primitiveArrayMapCurr.fieldPath) ); if (PrimitiveArrayMapNew != null) { Array.Copy(PrimitiveArrayMapNew.fieldValue, primitiveArrayMapCurr.fieldValue, PrimitiveArrayMapNew.fieldValue.Length); } } //Due to new settings changed, reinject level of logger Inject(logger); }