public void WriteNewParameters( NativeArray <float> matchedParameters, JaggedIndexing parameterSpace, NativeArray <OperatorDefinition> operatorData, JaggedNativeArray <float> targetParams, NativeArray <StructExpression> structExpressionData, ref int writeIndexInParamSpace, int indexInParams) { var targetSpace = new JaggedIndexing { index = writeIndexInParamSpace, length = (ushort)structExpressionSpace.length }; targetParams[indexInParams] = targetSpace; for (int i = 0; i < structExpressionSpace.length; i++) { var structExp = structExpressionData[i + structExpressionSpace.index]; targetParams[targetSpace, i] = structExp.EvaluateExpression( matchedParameters, parameterSpace, operatorData); } writeIndexInParamSpace += targetSpace.length; }
public SymbolSeriesSuffixMatcher BuildIntoManagedMemory( SystemLevelRuleNativeData nativeData, SymbolSeriesMatcherNativeDataWriter dataWriter, Allocator allocator = Allocator.Persistent) { var matcher = new SymbolSeriesSuffixMatcher(); matcher.graphNodeMemSpace = new JaggedIndexing { index = dataWriter.indexInSuffixNodes, length = (ushort)RequiredGraphNodeMemSpace }; dataWriter.indexInSuffixNodes += RequiredGraphNodeMemSpace; for (int i = 0; i < nodes.Count; i++) { var sourceNode = nodes[i]; nativeData.suffixMatcherGraphNodeData[i + matcher.graphNodeMemSpace.index] = new SymbolMatcherGraphNode { parentIndex = sourceNode.parentIndex, myIndexInParentChildren = sourceNode.myIndexInParentChildren, mySymbol = targetSymbolSeries[i].AsBlittable() }; } matcher.childrenOfRoot = new JaggedIndexing { index = dataWriter.indexInSuffixChildren, length = (ushort)rootChildren.Count }; var childrenAsArray = nodes.Select(x => x.childrenIndexes.ToArray()).ToArray(); var tmpIndexInChildren = 0; foreach (var rootChild in rootChildren) { nativeData.suffixMatcherChildrenDataArray[tmpIndexInChildren + dataWriter.indexInSuffixChildren] = rootChild; tmpIndexInChildren++; } JaggedNativeArray <int> .WriteJaggedIndexing( (indexInJagged, jaggedIndexing) => { var node = nativeData.suffixMatcherGraphNodeData[indexInJagged + matcher.graphNodeMemSpace.index]; node.childrenIndexing = jaggedIndexing; nativeData.suffixMatcherGraphNodeData[indexInJagged + matcher.graphNodeMemSpace.index] = node; }, childrenAsArray, nativeData.suffixMatcherChildrenDataArray, dataWriter.indexInSuffixChildren + tmpIndexInChildren ); dataWriter.indexInSuffixChildren += RequiredChildrenMemSpace; matcher.HasGraphIndexes = true; matcher.IsCreated = true; return(matcher); }