コード例 #1
0
            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;
            }
コード例 #2
0
        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);
        }