internal static LLTraitsHandle Create() { var handle = new LLTraitsHandle { m_Traits = UnsafeUtility.Malloc(UnsafeUtility.SizeOf <LowLevelNodeTraits>(), UnsafeUtility.AlignOf <LowLevelNodeTraits>(), Allocator.Persistent) }; handle.Resolve() = new LowLevelNodeTraits(); return(handle); }
/// <summary> /// Construct a node set. Remember to dispose it. /// <seealso cref="Dispose"/> /// </summary> public NodeSet() { m_NodeDefinitions.Add(s_InvalidDefinitionSlot); var defaultTraits = LLTraitsHandle.Create(); // stuff that needs the first slot to be invalid defaultTraits.Resolve() = new LowLevelNodeTraits(); m_Traits.Add(defaultTraits); m_ForwardingTable.Allocate(); m_ArraySizes.Allocate(); m_ManagedAllocators.Add(new ManagedMemoryAllocator()); // (we don't need a zeroth invalid index for nodes, because they are versioned) RendererModel = RenderExecutionModel.MaximallyParallel; m_RenderGraph = new RenderGraph(this); NodeSetID = ++s_NodeSetCounter; m_Batches = new VersionedList <InputBatch>(Allocator.Persistent, NodeSetID); m_GraphValues = new VersionedList <DataOutputValue>(Allocator.Persistent, NodeSetID); }