Files
gymkhana-actions/docs/api/Movable.md
Dennis Ploeger 4e09f522ff Documentation and Optimization Part 1 (#2)
Authored-by: Dennis Ploeger <develop@dieploegers.de>
2021-06-16 10:12:51 +02:00

3.8 KiB

Movable

Extends: Node

Description

Node that performs the moving (walk, teleport, terrain scaling...) actions on its parent node.

Property Descriptions

walk_path

var walk_path: Array

Character path through the scene as calculated by the Pathfinder

path_ofs

var path_ofs: int

Current active walk path entry

walk_destination

var walk_destination: Vector2

The destination where the character should be moving to

walk_context

var walk_context: Dictionary

A dictionary with context information about the walk command fast => Wether to walk fast or slow target => Walk target

moved

var moved: bool

Wether the character was moved at all

last_deg

var last_deg: int

Angle degrees to the last position (TODO is that correct?)

last_dir

var last_dir: int

Direction of the last position (TODO is that correct?)

last_scale

var last_scale: Vector2

Scale of the last position (TODO is that correct?)

pose_scale

var pose_scale: int

TODO Isn't this actually the flip state of the current animation?

parent

var parent

Shortcut variable that references the node's parent

bypass_missing_animation

var bypass_missing_animation

 If character misses an animation, bypass it and proceed.

Method Descriptions

teleport

func teleport(target, angle: Object = null) -> void

Teleports this item to the target position. TODO angle is only used for logging and has no further use, so it probably can be removed

Parameters

  • target: Vector2, Position2d or ESCItem

walk_to

func walk_to(pos: Vector2, p_walk_context = null) -> void

Walk to a given position

Parameters

  • pos: Position to walk to
  • p_walk_context: Walk context to use

walk

func walk(target_pos, p_speed, context = null) -> void

FIXME this function doesn't seem to be used anywhere

walk_stop

func walk_stop(pos: Vector2) -> var

We have finished walking. Set the idle pose and complete

Parameters

  • pos: Final target position

update_terrain

func update_terrain(on_event_finished_name = null) -> void

Update the sprite scale and lighting

Parameters

  • on_event_finished_name: Used if this function is called from an ESC event

is_angle_in_interval

func is_angle_in_interval(angle: float, interval: Array) -> bool

Returns true if given angle is inside the interval given by a starting_angle and the size. TODO Refactor to make this stuff understandable :D

Parameters

  • angle: Angle to test
  • interval : Array of size 2, containing the starting angle, and the size of interval eg: [90, 40] corresponds to angle between 90° and 130°

set_angle

func set_angle(deg: int, immediate = true) -> void

Sets character's angle and plays according animation.

TODO: depending on current angle and current angle, the character may directly turn around with no "progression". We may enhance this by calculating successive directions to turn the character to, so that he doesn't switch to opposite direction too fast. For example, if character looks WEST and set_angle(EAST) is called, we may want the character to first turn SOUTHWEST, then SOUTH, then SOUTHEAST and finally EAST, all more or less fast. Whatever the implementation, this should be activated using "parameter "immediate" set to false.

Parameters

  • deg int angle to set the character
  • immediate bool (currently unused, see TODO below) If true, direction is switched immediately. Else, successive animations are used so that the character turns to target angle.