void LoadValueScopes(SubstringOptimizedString subcode, ICompilerValues currentCode) { int currentSubValue = 0; var scopeBeginIndex = 0; while (scopeBeginIndex != -1) { if (currentSubValue != 0) { scopeBeginIndex = subcode.Length > 0 && subcode[0] == CodeValueBegin ? 0 : -1; } if (scopeBeginIndex != -1) { var scopeEndIndex = -1; var scopeAmount = 1; for (int i = scopeBeginIndex + 1; i < subcode.Length; i++) { if (subcode[i] == CodeValueBegin) { scopeAmount++; } else if (subcode[i] == CodeValueEnd) { scopeAmount--; if (scopeAmount == 0) { scopeEndIndex = i; break; } } } var scopeCode = subcode.Substring(scopeBeginIndex + 1, scopeEndIndex - scopeBeginIndex - 1); //print(scopeCode); if (scopeCode.Length > 0) { LoadValues(scopeCode, currentCode, currentSubValue); } subcode = subcode.Substring(scopeEndIndex + 1); currentSubValue++; } else { break; } } }
void ValueDelete(ICompilerValues value) { foreach (var v in value.Values) { if (v != null) { ValueDelete(v); } } Destroy(value.Transform.gameObject); }
void LoadValues(SubstringOptimizedString subcode, ICompilerValues currentCode, int value = 0) { var valueIndex = -1; var scopeIndex = subcode.Length; // Type:&"Text"(sub values) // This reads until ( for (int i = 0; i < subcode.Length; i++) { if (subcode[i] == CodeValueQuote) { valueIndex = i; } else if (subcode[i] == CodeValueBegin) { scopeIndex = i; break; } } var valueName = valueIndex == -1 ? subcode.Substring(0, scopeIndex) : subcode.Substring(0, valueIndex); var valueParent = currentCode.Transform.Find("Block") .Find($"Value{(value == 0 ? "" : (value + 1).ToString())}"); var valueObject = Instantiate(CodeIdPrefabs[valueName.ToString()], valueParent); var currentValue = valueObject.GetComponent <ICompilerValue>(); currentCode.Values[value] = currentValue; var loadedValue = valueIndex == -1 ? "" : subcode.Substring(valueIndex + 1, scopeIndex - valueIndex - 1).ToString(); currentValue.LoadValue(loadedValue); // Event Offset var offset = valueObject.gameObject.AddComponent <ValueOffset>(); (currentValue as IUseOffset).Offset = offset; offset.Connection = valueParent; if (scopeIndex < subcode.Length) { var newCode = subcode.Substring(scopeIndex); LoadValueScopes(newCode, currentValue); } }
public ValueCon(ICompilerValues con, int index, Transform lastParent) { this.con = con; this.index = index; this.lastCon = lastParent; }