HPawn
HPawn is a simpler Pawn implementation with a basic pawn-like implementation. Aimed for custom pawns not based on the Advanced functionality found in HPawn.
💡 HPawn
uses a series of Classes from the Helix Framework to Unreal Engine that make up what we refer to as HPawn
and it can constructed via Pawn()
.
HPawn
is simple by design and therefore can support exotic characters like the marketplace asset seen above.
Simple Construction of HPawn
-- Spawns an base Pawn
local base_pawn = Pawn(Vector(100, 0, 100), Rotator(0, 0, 0), "helix::SK_None")
Advanced Construction of HPawn
- ⚠️ You need to specify your own
SK_Pawn
andAnimBP_Pawn
if you want to use a custom Skeletal Mesh and AnimationBP. Otherwise use:helix::SK_None
--- Spawns a Green Man and updates construction properties
local green_man = Pawn(Vector(0, 0, 0), Rotator(0, 0, 0), "helix::SK_Pawn", "helix::AnimBP_Pawn")
green_man:SetMesh("helix::SK_Pawn", true)
green_man:SetAnimationBlueprint("helix::AnimBP_Pawn")
green_man:SetGravityScale(1)
green_man:SetJumpZVelocity(420)
green_man:SetCanCrouch(true)
green_man:SetCanJump(true)
green_man:SetCapsuleSize(48, 96)
green_man:SetBrakingSettings(8, 2, 2048, 0, 0, 0)
green_man:SetMaxAcceleration(2048)
green_man:SetSpringArmSettings(Vector(0, 0, 144), 300, Vector(0, 0, 0), true, 15)
green_man:SetRotationSettings(Rotator(0, 360, 0), false, true)
green_man:SetSpeedSettings(600, 300)
green_man:SetPawnSettings(false, false, false)
Simple Construction of HPawn with Posession
Spawns and Posesses HPawn with an active PlayerController
with a SkeletalMesh: SK_BullMech
and AnimationBP: ABP_BullMech
.
-- Spawns an base Pawn
local base_pawn = Pawn(Vector(100, 0, 100), Rotator(0, 0, 0), "helix::SK_BullMech", "helix::ABP_BullMech")
player:Possess(base_pawn)
Code Snippet
Add the following code to Server/Index.lua
file inside the package.
-- Function to spawn a Pawn to a player
function SpawnPawn(player)
-- Spawns a Pawn at position 1, 0, 100 with default's constructor parameters
local new_pawn = Pawn(Vector(1, 0, 100), Rotator(0, 0, 0), "helix::SK_HPawn", "helix::ABP_HPawn")
new_pawn:AddStaticMeshAttached("prop", "helix::SM_Cube")
new_pawn:SetCapsuleSize(32, 64)
new_pawn:SetCanCrouch(false)
-- Possess the new Pawn
player:Possess(new_pawn)
end
-- Subscribes to an Event which is triggered when Players join the server (i.e. Spawn)
Player.Subscribe("Spawn", SpawnPawn)
-- Iterates for all already connected players and give them a Pawn as well
-- This will make sure you also get a Pawn when you reload the package
Package.Subscribe("Load", function()
for k, player in pairs(Player.GetAll()) do
SpawnPawn(player)
end
end)
Constructors
local my_pawn = Pawn(location, rotation, mesh, custom_animation_blueprint?, collision_type?, gravity_enabled?)
Default Constructor
local my_hpawn = HPawn(location, rotation, mesh, custom_animation_blueprint?, collision_type?, gravity_enabled?)
Type | Name | Default | Description |
---|---|---|---|
Vector | location | ||
Rotator | rotation | ||
SkeletalMesh Reference or StaticMesh Reference | mesh | ||
Blueprint Reference | custom_animation_blueprint |
| |
CollisionType | collision_type | CollisionType.Normal | |
boolean | gravity_enabled | true |
Static Functions
Inherited Entity Static Functions
Returns | Name | Description | |
---|---|---|---|
table of Base Entity | GetAll | Returns a table containing all Entities of the class this is called on | |
Base Entity | GetByIndex | Returns a specific Entity of this class at an index | |
integer | GetCount | Returns how many Entities of this class exist | |
iterator | GetPairs | Returns an iterator with all Entities of this class to be used with pairs() | |
table | Inherit | Inherits this class with the Inheriting System | |
table of table | GetInheritedClasses | Gets a list of all directly inherited classes from this Class created with the Inheriting System | |
table or nil | GetParentClass | Gets the parent class if this Class was created with the Inheriting System | |
boolean | IsChildOf | Gets if this Class is child of another class if this Class was created with the Inheriting System | |
function | Subscribe | Subscribes to an Event for all entities of this Class | |
function | SubscribeRemote | Subscribes to a custom event called from server | |
Unsubscribe | Unsubscribes all callbacks from this Event in this Class within this Package, or only the callback passed |
Functions
Inherited Entity Functions
Returns | Name | Description | |
---|---|---|---|
integer | GetID | Gets the universal network ID of this Entity (same on both client and server) | |
table | GetClass | Gets the class of this entity | |
boolean | IsA | Recursively checks if this entity is inherited from a Class | |
function | Subscribe | Subscribes to an Event on this specific entity | |
function | SubscribeRemote | Subscribes to a custom event called from server on this specific entity | |
Unsubscribe | Unsubscribes all callbacks from this Event in this Entity within this Package, or only the callback passed | ||
SetValue | Sets a Value in this Entity | ||
any | GetValue | Gets a Value stored on this Entity at the given key | |
Destroy | Destroys this Entity | ||
boolean | IsValid | Returns true if this Entity is valid (i.e. wasn't destroyed and points to a valid Entity) | |
CallRemoteEvent | Calls a custom remote event directly on this entity to a specific Player | ||
CallRemoteEvent | Calls a custom remote event directly on this entity | ||
BroadcastRemoteEvent | Calls a custom remote event directly on this entity to all Players |
Inherited Actor Functions
Returns | Name | Description | |
---|---|---|---|
AddImpulse | Applies a force in world world to this Actor | ||
AttachTo | Attaches this Actor to any other Actor, optionally at a specific bone | ||
Detach | Detaches this Actor from AttachedTo Actor | ||
SetCollision | Sets this Actor's collision type | ||
SetDimension | Sets this Actor's Dimension | ||
SetForce | Adds a permanent force to this Actor, set to Vector(0, 0, 0) to cancel | ||
SetGravityEnabled | Sets whether gravity is enabled on this Actor | ||
SetVisibility | Sets whether the actor is visible or not | ||
SetHighlightEnabled | Sets whether the highlight is enabled on this Actor, and which highlight index to use | ||
SetOutlineEnabled | Sets whether the outline is enabled on this Actor, and which outline index to use | ||
SetLifeSpan | Sets the time (in seconds) before this Actor is destroyed. After this time has passed, the actor will be automatically destroyed. | ||
SetLocation | Sets this Actor's location in the game world | ||
SetRotation | Sets this Actor's rotation in the game world | ||
SetRelativeLocation | Sets this Actor's relative location in local space (only if this actor is attached) | ||
SetRelativeRotation | Sets this Actor's relative rotation in local space (only if this actor is attached) | ||
SetScale | Sets this Actor's scale | ||
SetNetworkAuthority | Sets the Player to have network authority over this Actor | ||
SetNetworkAuthorityAutoDistributed | Sets if this Actor will auto distribute the network authority between players | ||
TranslateTo | Smoothly moves this actor to a location over a certain time | ||
RotateTo | Smoothly rotates this actor to an angle over a certain time | ||
boolean | IsBeingDestroyed | Returns true if this Actor is being destroyed | |
boolean | IsVisible | Returns true if this Actor is visible | |
boolean | IsGravityEnabled | Returns true if gravity is enabled on this Actor | |
boolean | IsInWater | Returns true if this Actor is in water | |
boolean | IsNetworkDistributed | Returns true if this Actor is currently network distributed | |
table of Base Actor | GetAttachedEntities | Gets all Actors attached to this Actor | |
Base Actor or nil | GetAttachedTo | Gets the Actor this Actor is attached to | |
table | GetBounds | Gets this Actor's bounds | |
CollisionType | GetCollision | Gets this Actor's collision type | |
Vector | GetLocation | Gets this Actor's location in the game world | |
Vector | GetRelativeLocation | Gets this Actor's Relative Location if it's attached | |
Player or nil | GetNetworkAuthority | Gets this Actor's Network Authority Player | |
Rotator | GetRotation | Gets this Actor's angle in the game world | |
Rotator | GetRelativeRotation | Gets this Actor's Relative Rotation if it's attached | |
Vector | GetForce | Gets this Actor's force (set by SetForce() ) | |
integer | GetDimension | Gets this Actor's dimension | |
boolean | HasNetworkAuthority | Returns true if the local Player is currently the Network Authority of this Actor | |
boolean | HasAuthority | Gets if this Actor was spawned by the client side | |
Vector | GetScale | Gets this Actor's scale | |
Vector | GetVelocity | Gets this Actor's current velocity | |
AddActorTag | Adds an Unreal Actor Tag to this Actor | ||
RemoveActorTag | Removes an Unreal Actor Tag from this Actor | ||
table of string | GetActorTags | Gets all Unreal Actor Tags on this Actor | |
boolean | WasRecentlyRendered | Gets if this Actor was recently rendered on screen | |
float | GetDistanceFromCamera | Gets the distance of this Actor from the Camera | |
float | GetScreenPercentage | Gets the percentage of this Actor size in the screen |
Inherited Paintable Functions
Returns | Name | Description | |
---|---|---|---|
SetMaterial | Sets the material at the specified index of this Actor | ||
SetMaterialFromCanvas | Sets the material at the specified index of this Actor to a Canvas object | ||
SetMaterialFromSceneCapture | Sets the material at the specified index of this Actor to a SceneCapture object | ||
SetMaterialFromWebUI | Sets the material at the specified index of this Actor to a WebUI object | ||
ResetMaterial | Resets the material from the specified index to the original one | ||
SetMaterialColorParameter | Sets a Color parameter in this Actor's material | ||
SetMaterialScalarParameter | Sets a Scalar parameter in this Actor's material | ||
SetMaterialTextureParameter | Sets a texture parameter in this Actor's material to an image on disk | ||
SetMaterialVectorParameter | Sets a Vector parameter in this Actor's material | ||
SetPhysicalMaterial | Overrides this Actor's Physical Material with a new one |
Inherited Damageable Functions
Returns | Name | Description | |
---|---|---|---|
integer | ApplyDamage | Do damage to this entity | |
integer | GetHealth | Gets the current health | |
integer | GetMaxHealth | Gets the Max Health | |
Respawn | Respawns the Entity, fullying it's Health and moving it to it's Initial Location | ||
SetHealth | Sets the Health of this Entity | ||
SetMaxHealth | Sets the MaxHealth of this Entity |
Returns | Name | Description | |
---|---|---|---|
PlayAnimation | Plays an Animation Montage on this Pawn | ||
StopAnimation | Stops an Animation Montage on this Pawn | ||
AddSkeletalMeshAttached | Spawns and Attaches a SkeletalMesh into this Pawn | ||
AddStaticMeshAttached | Spawns and Attaches a StaticMesh into this Pawn | ||
RemoveSkeletalMeshAttached | Removes, if existing, a SkeletalMesh from this Pawn given it's custom ID | ||
RemoveStaticMeshAttached | Removes, if existing, a StaticMesh from this Pawn given it's custom ID | ||
RemoveAllStaticMeshesAttached | Removes all StaticMeshes attached | ||
RemoveAllSkeletalMeshesAttached | Removes all SkeletalMeshes attached | ||
SetMesh | Changes the Pawn Mesh on the fly | ||
SkeletalMesh Reference or StaticMesh Reference | GetMesh | Gets the Skeletal Mesh Asset | |
Vector | GetMovingTo | Gets the Moving To location | |
MoveTo | AI: Makes this Pawn to walk to the Location | ||
Follow | AI: Makes this Pawn to follow another actor | ||
StopMovement | AI: Stops the movement | ||
Player or nil | GetPlayer | Gets the possessing Player | |
Rotator | GetControlRotation | Gets the Control Rotation | |
HideBone | Hides a bone of this Pawn | ||
UnHideBone | UnHide a bone of this Pawn | ||
boolean | IsBoneHidden | Gets if a bone is hidden | |
Jump | Triggers this Pawn to jump | ||
SetJumpZVelocity | Sets the velocity of the jump | ||
SetMaxAcceleration | Sets the max acceleration | ||
SetCapsuleSize | Sets this Pawn's Capsule size | ||
SetCanJump | Sets if this Pawn is allowed to Jump | ||
SetCanCrouch | Sets if this Pawn is allowed to Crouch and to Prone | ||
SetBrakingSettings | Sets the Movement Braking Settings of this Pawn | ||
SetSpringArmSettings | Sets the Spring Arm Settings of this Pawn | ||
SetRotationSettings | Sets the Rotation Settings of this Pawn | ||
SetSpeedSettings | Sets the Speed Settings of this Pawn | ||
SetPawnSettings | Sets the Pawn Settings of this Pawn | ||
SetAnimationBlueprint | Sets the Animation Blueprint of this Pawn |
PlayAnimation
Plays an Animation Montage on this Pawn
my_hpawn:PlayAnimation(animation_path, slot_name?, loop_indefinitely?, blend_in_time?, blend_out_time?, play_rate?, stop_all_montages?)
Type | Parameter | Default | Description |
---|---|---|---|
Animation Reference | animation_path | ||
string | slot_name? |
| |
boolean | loop_indefinitely? | false | |
float | blend_in_time? | 0.25 | |
float | blend_out_time? | 0.25 | |
float | play_rate? | 1.0 | |
boolean | stop_all_montages? | false | Stops all running Montages from the same Group |
StopAnimation
Stops an Animation Montage on this Pawn
my_hpawn:StopAnimation(animation_asset)
Type | Parameter | Default | Description |
---|---|---|---|
Animation Reference | animation_asset |
AddSkeletalMeshAttached
Spawns and Attaches a SkeletalMesh into this Pawn, the SkeletalMesh must have the same Skeletal used by the Pawn Mesh, and will follow all animations from it. Uses a custom ID to be used for removing it further.
For customizing the Materials specific of a SkeletalMeshAttached, please use the following syntax in the Paintable methods:attachable///[ATTACHABLE_ID]/[PARAMETER_NAME]
, where [ATTACHABLE_ID] is the ID of the Attachable, and [PARAMETER_NAME] is the name of the parameter you want to change.
my_hpawn:AddSkeletalMeshAttached(id, skeletal_mesh_asset?)
Type | Parameter | Default | Description |
---|---|---|---|
string | id | Used further for removing or applying material settings on it | |
SkeletalMesh Reference | skeletal_mesh_asset? |
|
AddStaticMeshAttached
Spawns and Attaches a StaticMesh into this Pawn in a Socket with relative Location and Rotation. Uses a custom ID to be used for removing it further
For customizing the Materials specific of a StaticMeshAttached, please use the following syntax as theparameter_name
in the Paintable methods:attachable///[ATTACHABLE_ID]/[PARAMETER_NAME]
, where [ATTACHABLE_ID] is the ID of the Attachable, and [PARAMETER_NAME] is the name of the parameter you want to change.
my_hpawn:AddStaticMeshAttached(id, static_mesh_asset?, socket?, relative_location?, relative_rotation?)
Type | Parameter | Default | Description |
---|---|---|---|
string | id | Used further for removing or applying material settings on it | |
StaticMesh Reference | static_mesh_asset? |
| |
string | socket? |
| |
Vector | relative_location? | Vector(0, 0, 0) | |
Rotator | relative_rotation? | Rotator(0, 0, 0) |
RemoveSkeletalMeshAttached
Removes, if existing, a SkeletalMesh from this Pawn given it's custom ID
my_hpawn:RemoveSkeletalMeshAttached(id)
Type | Parameter | Default | Description |
---|---|---|---|
string | id |
RemoveStaticMeshAttached
Removes, if existing, a StaticMesh from this Pawn given it's custom ID
my_hpawn:RemoveStaticMeshAttached(id)
Type | Parameter | Default | Description |
---|---|---|---|
string | id |
RemoveAllStaticMeshesAttached
Removes all StaticMeshes attached
my_hpawn:RemoveAllStaticMeshesAttached()
RemoveAllSkeletalMeshesAttached
Removes all SkeletalMeshes attached
my_hpawn:RemoveAllSkeletalMeshesAttached()
SetMesh
Changes the Pawn Mesh on the fly
my_hpawn:SetMesh(mesh_asset, adjust_capsule_size)
Type | Parameter | Default | Description |
---|---|---|---|
SkeletalMesh Reference or StaticMesh Reference | mesh_asset | ||
boolean | adjust_capsule_size | Auto adjust the capsule size based on the Mesh size |
GetMesh
Gets the Skeletal Mesh Asset
— Returns SkeletalMesh Reference or StaticMesh Reference.
local ret = my_hpawn:GetMesh()
GetMovingTo
Gets the Moving To location
— Returns Vector (the moving to location or Vector(0, 0, 0) if not moving).
local ret = my_hpawn:GetMovingTo()
MoveTo
AI: Makes this Pawn to walk to the Location
Triggers event MoveCompleted
my_hpawn:MoveTo(location, acceptance_radius?)
Follow
AI: Makes this Pawn to follow another actor
Triggers event MoveCompleted
my_hpawn:Follow(actor, acceptance_radius?, stop_on_succeed?, stop_on_fail?, update_rate?)
Type | Parameter | Default | Description |
---|---|---|---|
Base Actor | actor | Actor to follow | |
float | acceptance_radius? | 50 | Radius to consider success |
boolean | stop_on_succeed? | false | Whether to stop when reaching the target |
boolean | stop_on_fail? | false | Whether to stop when failed to reach the target |
float | update_rate? | 0.25 | How often to recalculate the AI path |
StopMovement
AI: Stops the movement
Triggers event [MoveCompleted](Pawn#movecompleted)
my_hpawn:StopMovement()
GetPlayer
Gets the possessing Player
local ret = my_hpawn:GetPlayer()
GetControlRotation
Gets the Control Rotation
— Returns Rotator.
local ret = my_hpawn:GetControlRotation()
HideBone
Hides a bone of this Pawn.
Check Bone Names List
my_hpawn:HideBone(bone_name?)
Type | Parameter | Default | Description |
---|---|---|---|
string | bone_name? |
| Bone to hide |
UnHideBone
UnHide a bone of this Pawn.
Check Bone Names List
my_hpawn:UnHideBone(bone_name)
Type | Parameter | Default | Description |
---|---|---|---|
string | bone_name | Bone to unhide |
IsBoneHidden
Gets if a bone is hidden
— Returns boolean (if the bone is hidden).
local ret = my_hpawn:IsBoneHidden(bone_name)
Type | Parameter | Default | Description |
---|---|---|---|
string | bone_name | Bone to check |
Jump
Triggers this Pawn to jump
my_hpawn:Jump()
SetJumpZVelocity
Sets the velocity of the jump
my_hpawn:SetJumpZVelocity(velocity)
Type | Parameter | Default | Description |
---|---|---|---|
integer | velocity | Default is 450 |
SetMaxAcceleration
Sets the max acceleration
my_hpawn:SetMaxAcceleration(acceleration)
Type | Parameter | Default | Description |
---|---|---|---|
integer | acceleration | Default is 2048 |
SetCapsuleSize
Sets this Pawn's Capsule size (will affect Camera location and Pawn's collision)
my_hpawn:SetCapsuleSize(radius, half_height)
SetCanJump
Sets if this Pawn is allowed to Jump
my_hpawn:SetCanJump(can_jump)
Type | Parameter | Default | Description |
---|---|---|---|
boolean | can_jump |
SetCanCrouch
Sets if this Pawn is allowed to Crouch and to Prone
my_hpawn:SetCanCrouch(can_crouch)
Type | Parameter | Default | Description |
---|---|---|---|
boolean | can_crouch |
SetBrakingSettings
Sets the Movement Braking Settings of this Pawn
my_hpawn:SetBrakingSettings(ground_friction?, braking_friction_factor?, braking_walking?, braking_flying?, braking_swimming?, braking_falling?)
Type | Parameter | Default | Description |
---|---|---|---|
float | ground_friction? | 2 | |
float | braking_friction_factor? | 2 | |
integer | braking_walking? | 96 | |
integer | braking_flying? | 3000 | |
integer | braking_swimming? | 10 | |
integer | braking_falling? | 0 |
SetSpringArmSettings
Sets the Spring Arm Settings of this Pawn
my_hpawn:SetSpringArmSettings(relative_location, target_arm_length, socket_offset, enable_camera_lag, camera_lag_speed)
Type | Parameter | Default | Description |
---|---|---|---|
Vector | relative_location | ||
float | target_arm_length | ||
Vector | socket_offset | ||
boolean | enable_camera_lag | ||
float | camera_lag_speed |
SetRotationSettings
Sets the Rotation Settings of this Pawn
my_hpawn:SetRotationSettings(rotation_rate, use_controller_desired_rotation, orient_rotation_to_movement)
Type | Parameter | Default | Description |
---|---|---|---|
Rotator | rotation_rate | ||
boolean | use_controller_desired_rotation | ||
boolean | orient_rotation_to_movement |
SetSpeedSettings
Sets the Speed Settings of this Pawn
my_hpawn:SetSpeedSettings(max_walk_speed, max_walk_speed_crouched)
SetPawnSettings
Sets the Pawn Settings of this Pawn
my_hpawn:SetPawnSettings(use_controller_rotation_pitch, use_controller_rotation_yaw, use_controller_rotation_roll)
Type | Parameter | Default | Description |
---|---|---|---|
boolean | use_controller_rotation_pitch | ||
boolean | use_controller_rotation_yaw | ||
boolean | use_controller_rotation_roll |
SetAnimationBlueprint
Sets the Animation Blueprint of this Pawn
my_hpawn:SetAnimationBlueprint(custom_animation_blueprint)
Type | Parameter | Default | Description |
---|---|---|---|
Blueprint Reference | custom_animation_blueprint |
Events
Inherited Entity Events
Name | Description | |
---|---|---|
Spawn | Triggered when an Entity is spawned/created | |
Destroy | Triggered when an Entity is destroyed | |
ValueChange | Triggered when an Entity has a value changed with :SetValue() | |
ClassRegister | Triggered when a new Class is registered with the Inheriting System |
Inherited Actor Events
Name | Description | |
---|---|---|
Spawn | Triggered when an Entity is spawned/created | |
Destroy | Triggered when an Entity is destroyed | |
ValueChange | Triggered when an Entity has a value changed with :SetValue() | |
ClassRegister | Triggered when a new Class is registered with the Inheriting System |
Inherited Damageable Events
Name | Description | |
---|---|---|
Spawn | Triggered when an Entity is spawned/created | |
Destroy | Triggered when an Entity is destroyed | |
ValueChange | Triggered when an Entity has a value changed with :SetValue() | |
ClassRegister | Triggered when a new Class is registered with the Inheriting System |
Possess
When Pawn is possessed
HPawn.Subscribe("Possess", function(self, possesser)
-- Possess was called
end)
UnPossess
When Pawn is unpossessed
HPawn.Subscribe("UnPossess", function(self, old_possesser)
-- UnPossess was called
end)