Demo Seat Setup
This guide will go over how the Seats of the Demo Projects are setup. Generally seat definitions are found on the Mounts themselves. Each mount will have their own seat arragement depending on the mesh and placement of the seats you wish to use.
References
For a closer look at how seats are defined on the PNMS system download the demo project and inspect the classes listeded below. To download the demos see the instructions in the [LINK="pnms/demo-quickstart"]Quick Start Guide[/LINK] page.
Additionally a more comprehensive information to the Seat Manager and its components can be found Data Structures Page
Mounting System Tutorial Core (MSTC)
BP_MST_MountCharacterBase
The MSTC does not have any mounts that define their seats. Instead it has a base class that all character based mounts can be a child of.
Mounting System Tutorial (MST)
BP_MST_RobotHorse
This class is a child class of the BP_MST_MountCharacterBase
class with two defined Seating placement of the Driver and the Passenger. Each seat can be mounted from the left or the right side. You can inspect how the seats are defined by clicking on the UMountablePawnComponent
and expanding the Seat Manager class
Advanced Mounting System (AMS)
AmsAdvancedMountCharacterBase
This is a C++ class and base class to all Character Based Mounts in the Advanced mounting System. It does not define seats because it is a base class.
BP_AMS_RobotHorse
This is a child class of the AmsAdvancedMountCharacterBase
with two defined seating placements of the Driver and the Passenger. Each seat can be mounted from the left or right side. You can inspect how the seats are defined by clicking on the UMountablePawnComponent
and expanding the Seat Manager Class.
Defining the Seats
To define a seat in the PNM System click on the mounts UMountablePawnComponent
and find the property "Seat Manager". The seat manager manages all seats of the mount.
The Seat Manager has a property called "Seats" which is an array of seats definitions. To add a new seat you can simply click on the plus sign in the editor.
Define the Seat Properties
The Seat has several properties including a handy "Seat Name
" which also appears in the top level of the array list to easily find the seat you want to work on, so always give your seat a name.
Next "Seat Socket Name"
is the name of the socket this seat represents. This is what the system uses to decide what socket or bone to attach your character to when they occupy the seat. You can add a new mounting point by
The "Is Linked Actor
" check box can be enabled or disabled if this seat should represent a Linked Actor Seat, one that is not part of the mounts main body.
The MountingData
Property is another array of that defines the mounting points of the seat. These are the points that a player
Define Seat Mounting Points
Mounting Points define where a player either gets on or off the mount. Each seat may have more than on mounting point. For example an animal such as a horse can have a mounting point on the left and right of each seat. Additionally the Driver Seat may have a mounting point in front of the animal while the passenger seat may have a mounting point behind it.
To create a new mounting point click the "Plus" sign next to the Mounting Data property.
Each Mounting Point has an unique numerical ID that is automatically incremented as you add new mounting points to all the seats.
Each Point also has a "Mount Position
" property that indicates where about the rider needs to be in order to perform the mounting operation.
Each point also has a "Relative Mounting Offset
" value, this is the position the player needs to be relative to the mount's main body before it can mount. This value is visually editable within the Editor so you can manually move it around and get it where you want it.
Additionally there is a "Relative Dismounting Offset
" which is enabled and disabled with the variable "Use Custom Dismounting Offset
" property. When enabled the player can be dismounted to a different location than they would mount from. This can help with issues of collision of the mounts during dismounting. If "Use Custom Dismounting Offset
" is false then the mounting point will use the same value as "Relative Mounting Offset
".