Table of Contents

Class ManipulationService3D

Namespace
GridPlacement.GDScript
Assembly
MoonBark.GridPlacement.GDScript.dll
class ManipulationService3D extends RefCounted
ManipulationService3D

Properties

source

var source: Manipulatable = PlacementSearchUtils.find_first(p_root, Manipulatable)

move_data

var move_data = ManipulationData.new(

failed_reason

var failed_reason: String = _validate_move_preconditions(p_root, move_data)

started

var started: bool = _start_move(move_data)

bad_results

var bad_results = ValidationResults.new(false, "[p_move] is not valid. Cannot move object.", {})

target_root

var target_root: Node3D = p_move.target.root as Node3D

move_rules

var move_rules: Array[PlacementRule] = []

ignore_base

var ignore_base: bool = false

validation_results

var validation_results: ValidationResults

setup_report

var setup_report: PlacementReport = _indicator_manager.try_setup(

issues

var issues: Array = setup_report.indicators_report.issues

vr

var vr = ValidationResults.new(

old_transform

var old_transform: Transform3D = (p_move.source.root as Node3D).global_transform

manipulation_parent

var manipulation_parent: ManipulationParent3D = _states.manipulation.parent_3d

final_position

var final_position: Vector3 = target_root.global_position

accumulated_basis

var accumulated_basis: Basis = manipulation_parent.basis

accumulated_scale

var accumulated_scale: Vector3 = manipulation_parent.scale

root_node

var root_node: Node3D = p_move.source.root as Node3D

applied_position

var applied_position: Vector3 = root_node.global_position if root_node != null else final_position

target

var target: Manipulatable = p_manipulatable if p_manipulatable != null else _states.manipulation.active_manipulatable

demolish_data

var demolish_data = DemolishData.new(

root

var root: Node3D = p_data.target.root as Node3D

display_name

var display_name: String = _get_demolish_display_name(target)

data

var data: ManipulationData = _states.manipulation.data

manipulation_parent

var manipulation_parent: ManipulationParent3D = _states.manipulation.parent_3d

root

var root: Node3D = p_data.target.root as Node3D

kept_script_types

var kept_script_types: Array[String] = ["Manipulatable"]

source_basis

var source_basis: Basis = (p_data.source.root as Node3D).global_transform.basis

source_position

var source_position: Vector3 = (p_data.source.root as Node3D).global_position

move_rules

var move_rules: Array[PlacementRule] = []

ignore_base_rules

var ignore_base_rules: bool = p_data.source.settings != null and p_data.source.settings.ignore_base_rules == true

report

var report: PlacementReport = _indicator_manager.try_setup(move_rules, _states.targeting, ignore_base_rules)

Methods

configure

func configure( p_states: PlacementStates,

set_indicator_manager

func set_indicator_manager(p_indicator_manager: IndicatorManager) -> void:

Parameters

p_indicator_manager

Returns

set_source_tree_exiting_callback

func set_source_tree_exiting_callback(p_callback: Callable) -> void:

Parameters

p_callback

Returns

try_move

func try_move(p_root: Node3D) -> ManipulationData:

Parameters

p_root

Returns

try_placement

func try_placement(p_move: ManipulationData) -> ValidationResults:

Parameters

p_move

Returns

try_demolish

func try_demolish(p_manipulatable: Manipulatable) -> ManipulationData:

Parameters

p_manipulatable

Returns

cancel

func cancel() -> void:

Returns

rotate

func rotate(p_target: Node, increment: int = 1) -> bool:

Parameters

p_target
increment

Returns

get_targeted

func get_targeted() -> Node:

Returns

set_targeted

func set_targeted(p_obj_root: Node) -> void:

Parameters

p_obj_root

Returns

is_ready

func is_ready() -> bool:

Returns