<?xml version="1.0" encoding="UTF-8" ?>
<class name="BlackboardPlan" inherits="Resource" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
	<brief_description>
		Stores and manages variables that will be used in constructing new [Blackboard] instances.
	</brief_description>
	<description>
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="create_blackboard">
			<return type="Blackboard" />
			<param index="0" name="node" type="Node" />
			<param index="1" name="parent_scope" type="Blackboard" default="null" />
			<description>
				Constructs a new instance of a [Blackboard] using this plan. If [NodePath] prefetching is enabled, [param node] will be used to retrieve node instances for [NodePath] variables and substitute their values.
			</description>
		</method>
		<method name="get_base_plan" qualifiers="const">
			<return type="BlackboardPlan" />
			<description>
				Returns the base plan. See [method is_derived].
			</description>
		</method>
		<method name="get_parent_scope_plan_provider" qualifiers="const">
			<return type="Callable" />
			<description>
				Returns the parent scope plan provider - a callable that returns a [BlackboardPlan].
			</description>
		</method>
		<method name="is_derived" qualifiers="const">
			<return type="bool" />
			<description>
				Returns [code]true[/code] if this plan is derived from another, i.e., the base plan is not [code]null[/code]. A derived plan can only contain variables that are present in the base plan, and only variable values can be different.
			</description>
		</method>
		<method name="populate_blackboard">
			<return type="void" />
			<param index="0" name="blackboard" type="Blackboard" />
			<param index="1" name="overwrite" type="bool" />
			<param index="2" name="node" type="Node" />
			<description>
				Populates [param blackboard] with the variables from this plan. If [param overwrite] is [code]true[/code], existing variables with the same names will be overwritten. If [NodePath] prefetching is enabled, [param node] will be used to retrieve node instances for [NodePath] variables and substitute their values.
			</description>
		</method>
		<method name="set_base_plan">
			<return type="void" />
			<param index="0" name="blackboard_plan" type="BlackboardPlan" />
			<description>
				Sets the base plan. If assigned, this plan will be derived from the base plan.
				Use with caution, as it will remove variables not present in the base plan. Only use this for custom tooling.
			</description>
		</method>
		<method name="set_parent_scope_plan_provider">
			<return type="void" />
			<param index="0" name="callable" type="Callable" />
			<description>
				Sets the parent scope plan provider - a callable that returns a [BlackboardPlan]. Used to provide hints in the inspector. When set, mapping feature becomes available.
			</description>
		</method>
		<method name="sync_with_base_plan">
			<return type="void" />
			<description>
				Synchronizes this plan with the base plan: removes variables not present in the base plan, and updates type information. Only use this for custom tooling.
			</description>
		</method>
	</methods>
	<members>
		<member name="prefetch_nodepath_vars" type="bool" setter="set_prefetch_nodepath_vars" getter="is_prefetching_nodepath_vars" default="true">
			Enables or disables [NodePath] variable prefetching. If [code]true[/code], [NodePath] values will be replaced with node instances when the [Blackboard] is created.
		</member>
	</members>
</class>
