- What permissions do you give others to modify and/or maintain your submission?
- Modify: YES - Maintain: YES - I give permission for my entire submission to be modified by others or used in their own work. I give permission for my entire submission to be maintained by others as well.
- I made sure my file(s) follow the Submissions Guidelines
- Yes
- I named my file(s) correctly (see Filename Conventions)
- Yes
Important Disclaimer:
There may be confusion over permissions so let me clarify them immediately. You are free to repackage this in any way, but if you wish to add features to this, please get in contact with me so we can ensure there aren't any breaking changes, and implement new features for all to use! If anyone chooses to edit this library and cause a breaking change in other maps please do not contact me for it.
In short, feel free to use, but please refrain from editing without either talking to me, or submitting a merge request on GitHub.
An all new library to make any level more dynamic! Add custom cameras to any stage, allowing for more dynamic setpieces! This mod still has more features planned, so please look to give feedback on the project's GitHub page (its also the easiest way to send me bug reports)
Features
- An all new camera system entirely controlled by the mapper!
- Two new camera modes to make more dynamic levels!
- Compatibility with Goldenshine's Rails
- Partial compatibility with Axis2D
- Full Lua support! Call it to make more engaging levels or bosses!
All the gifs above were provided by the beta tester Limo, huge shoutouts for messing with this camera and showcasing its power to the world
How to use (Mapping):
- Add
lua.solcam = on
to your levelheader to enable the camera - Create a control sector
- Set up a linedef trigger
- Set a line on the sector to type 443, Call Lua Function
- Input the desired SolCam function in the "Function Name" field to select a mode
How to use (Lua):
- Add `lua.solcam = on` to your levelheader to enable the camera (yes this means sol cam only works in supported maps, even via lua to prevent camera issues)
- Call the functions below to transition the camera
Important Notes:
- BINARY MAPPING IS NOT RECOMMENDED FOR THIS TOOL
- Using any autocancel condition may have some jank, be aware that the transitions may not be perfect
Default mode
This is the "OFF" mode of SolCam, where other cameras can take over, or where the player camera has input.Function Name: SOLCAMDF
Lua Function: SC_SetDefaultMode(player, transitiontime, XYangle)
UDMF Arguments:
- Argument 1: Camera Transition Time [ticks]
- Argument 2: Angle for Exiting Camera [degrees]
Binary Arguments:
- Linedef Angle: Angle for Exiting Camera [degrees]
Lua Arguments:
- player: The Player this function is being called for [player_t]
- transitiontime: the time for the camera transition [ticks]
- XYangle: The angle to transition the camera to before giving control back to the player [angle_t]
Orbital mode
Set a fixed camera that follows the player.Function Name: SOLCAMOR
Lua Function: SC_SetOrbitalMode(player, transitiontime, radius, XYangle, Zheight[[, canceltics], cancelflag])
UDMF Arguments:
- Argument 1: Camera Transition Time [ticks]
- Argument 2: Camera Distance from Player [fracunits]
- Argument 3: Angle from Player [degrees]
- Argument 4: Camera Height Offset relative to Player [fracunits]
- Argument 5: Autocancel after [ticks]
- String Argument 2: Extra Autocancel Condition
Binary Arguments:
- Front Side X Offset: Camera Distance from Player [fracunits]
- Linedef Angle: Angle from Player [degrees]
- Front Side Y Offset: Camera Height Offset relative to Player [fracunits]
Lua Arguments:
- player: The Player this function is being called for [player_t]
- transitiontime: Camera Transition Time [ticks]
- radius: Camera Distance from Player [fixed_t]
- XYangle: Angle from Player [angle_t]
- Zheight: Camera Height Offset relative to Player [fixed_t]
- canceltics: Autocancel after [ticks] (set to zero to not cancel)
- cancelflag: Extra Autocancel Condition [string]
Autocancel Conditions
jump
: SolCam cancels upon a jumpspring
: SolCam cancels when sprunggrounded
: SolCam cancels when you hit the groundcarry
: SolCam cancels when you get carried by something
Static Point mode
Like the original Alternate Viewpoint, except upgraded! Note, this requires you to place an Alternate Viewpoint Thing to use this mode, and either tag it directly to the linedef (UDMF) or tag the sector its in to the linedef (Binary)Function Name: SOLCAMSP
Lua Function: SC_SetStaticPointMode(player, transitiontime, pointX, pointY, pointZ[[, canceltics], cancelflag])
UDMF Arguments:
- Argument 1: Camera Transition Time [ticks]
- Argument 2: Tag of Alternate Viewpoint Mapthing [number]
- Argument 5: Autocancel after [ticks]
- String Argument 2: Extra Autocancel Condition
Binary Arguments:
- Front Side X Offset: Camera Transition Time [ticks]
- Tag: Sector tag where the Alternate Viewpoint Mapthing resides [number]
Lua Arguments:
- player: The Player this function is being called for [player_t]
- transitiontime: Camera Transition Time [ticks]
- pointX: X position of the camera [fixed_t]
- pointY: Y position of the camera [fixed_t]
- pointZ: Z position of the camera [fixed_t]
- cancelticks: Autocancel after [ticks] (set to zero to not cancel)
- cancelflag: Extra Autocancel Condition [string]
Autocancel Conditions
jump
: SolCam cancels upon a jumpspring
: SolCam cancels when sprunggrounded
: SolCam cancels when you hit the groundcarry
: SolCam cancels when you get carried by something
Static Point Fixed mode
This literally is the original Static Point Mode! Note, this requires you to place an Alternate Viewpoint Thing to use this mode, and either tag it directly to the linedef (UDMF) or tag the sector its in to the linedef (Binary)Function Name: SOLCAMSF
Lua Function: SC_SetStaticPointMode(player, transitiontime, pointX, pointY, pointZ[[, canceltics], cancelflag])
UDMF Arguments:
- Argument 1: Camera Transition Time [ticks]
- Argument 2: Tag of Alternate Viewpoint Mapthing [number]
- Argument 5: Autocancel after [ticks]
- Angle of mapthing: Direction to Point the Camera in [angle]
- Tilt of mapthing: The vertical tilt angle of the Camera [angle]
- String Argument 2: Extra Autocancel Condition
Binary Arguments:
- Front Side X Offset: Camera Transition Time [ticks]
- Tag: Sector tag where the Alternate Viewpoint Mapthing resides [number]
- Angle of mapthing: Direction to Point the Camera in [angle]
Lua Arguments:
- player: The Player this function is being called for [player_t]
- transitiontime: Camera Transition Time [ticks]
- pointX: X position of the camera [fixed_t]
- pointY: Y position of the camera [fixed_t]
- pointZ: Z position of the camera [fixed_t]
- angle: angle for where the camera should look [angle_t]
- tilt: the tilt angle for where the camera should look [angle_t]
- cancelticks: Autocancel after [ticks] (set to zero to not cancel)
- cancelflag: Extra Autocancel Condition [string]
Autocancel Conditions
- jump: SolCam cancels upon a jump
- spring: SolCam cancels when sprung
- grounded: SolCam cancels when you hit the ground
- carry: SolCam cancels when you get carried by something