Compare commits
No commits in common. "fb4a03e71787e2317b37e837de6e44b719350988" and "8744cb759b2d378aca5de8ae71ed754fe9d1e142" have entirely different histories.
fb4a03e717
...
8744cb759b
|
|
@ -26,7 +26,6 @@ r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True
|
||||||
r.DefaultFeature.LocalExposure.HighlightContrastScale=0.8
|
r.DefaultFeature.LocalExposure.HighlightContrastScale=0.8
|
||||||
|
|
||||||
r.DefaultFeature.LocalExposure.ShadowContrastScale=0.8
|
r.DefaultFeature.LocalExposure.ShadowContrastScale=0.8
|
||||||
r.DefaultFeature.MotionBlur=False
|
|
||||||
|
|
||||||
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
|
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
|
||||||
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
|
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
|
||||||
|
|
@ -96,5 +95,4 @@ ManualIPAddress=
|
||||||
|
|
||||||
|
|
||||||
[CoreRedirects]
|
[CoreRedirects]
|
||||||
+ClassRedirects=(OldName="/Script/TengriPlatformer.UTengriCollisionResolver",NewName="/Script/TengriPlatformer.TengriCollisionResolver")
|
+ClassRedirects=(OldName="/Script/TengriPlatformer.UTengriCollisionResolver",NewName="/Script/TengriPlatformer.TengriCollisionResolver")
|
||||||
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
// Content/Blueprints/BP_MainCharacter.ts
|
// Content/Blueprints/BP_MainCharacter.ts
|
||||||
|
|
||||||
|
import { AC_Camera } from '/Content/Camera/AC_Camera.ts';
|
||||||
import { AC_DebugHUD } from '/Content/Debug/Components/AC_DebugHUD.ts';
|
import { AC_DebugHUD } from '/Content/Debug/Components/AC_DebugHUD.ts';
|
||||||
import { AC_InputDevice } from '/Content/Input/Components/AC_InputDevice.ts';
|
import { AC_InputDevice } from '/Content/Input/Components/AC_InputDevice.ts';
|
||||||
import { IMC_Default } from '/Content/Input/IMC_Default.ts';
|
import { IMC_Default } from '/Content/Input/IMC_Default.ts';
|
||||||
|
|
@ -10,8 +11,11 @@ import { EnhancedInputLocalPlayerSubsystem } from '/Content/UE/EnhancedInputLoca
|
||||||
import type { Float } from '/Content/UE/Float.ts';
|
import type { Float } from '/Content/UE/Float.ts';
|
||||||
import { MathLibrary } from '/Content/UE/MathLibrary.ts';
|
import { MathLibrary } from '/Content/UE/MathLibrary.ts';
|
||||||
import type { PlayerController } from '/Content/UE/PlayerController.ts';
|
import type { PlayerController } from '/Content/UE/PlayerController.ts';
|
||||||
|
import { Rotator } from '/Content/UE/Rotator.ts';
|
||||||
import { SystemLibrary } from '/Content/UE/SystemLibrary.ts';
|
import { SystemLibrary } from '/Content/UE/SystemLibrary.ts';
|
||||||
import { Vector } from '/Content/UE/Vector.ts';
|
import { Vector } from '/Content/UE/Vector.ts';
|
||||||
|
import { TengriMovementComponent } from '/Source/TengriPlatformer/Movement/TengriMovementComponent.ts';
|
||||||
|
import { DA_TengriMovementConfig } from '/Content/Movement/DA_TengriMovementConfig.ts';
|
||||||
import { TengriCharacter } from '/Source/TengriPlatformer/Character/TengriCharacter.ts';
|
import { TengriCharacter } from '/Source/TengriPlatformer/Character/TengriCharacter.ts';
|
||||||
import { IA_Interact } from '/Content/Input/Actions/IA_Inreract.ts';
|
import { IA_Interact } from '/Content/Input/Actions/IA_Inreract.ts';
|
||||||
import { IA_Throw } from '/Content/Input/Actions/IA_Throw.ts';
|
import { IA_Throw } from '/Content/Input/Actions/IA_Throw.ts';
|
||||||
|
|
@ -19,9 +23,9 @@ import { IA_Aim } from '/Content/Input/Actions/IA_Aim.ts';
|
||||||
import { IMC_ItemHeld } from '/Content/Input/IMC_ItemHeld.ts';
|
import { IMC_ItemHeld } from '/Content/Input/IMC_ItemHeld.ts';
|
||||||
import { CreateWidget } from '/Content/UE/CteateWidget.ts';
|
import { CreateWidget } from '/Content/UE/CteateWidget.ts';
|
||||||
import { WBP_HUD } from '/Content/UI/WBP_HUD.ts';
|
import { WBP_HUD } from '/Content/UI/WBP_HUD.ts';
|
||||||
|
import { SpringArmComponent } from '/Content/UE/SpringArmComponent.ts';
|
||||||
|
import { LinearColor } from '/Content/UE/LinearColor.ts';
|
||||||
import { CustomDefaultSkeletalMesh } from '/Content/BasicShapes/CustomDefaultSkeletalMesh.ts';
|
import { CustomDefaultSkeletalMesh } from '/Content/BasicShapes/CustomDefaultSkeletalMesh.ts';
|
||||||
import { ETengriCameraBehavior } from '/Source/TengriPlatformer/Camera/Core/TengriCameraConfig.ts';
|
|
||||||
import { DA_CameraAiming } from '/Content/Camera/DA_CameraAiming.ts';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main Character Blueprint
|
* Main Character Blueprint
|
||||||
|
|
@ -86,13 +90,17 @@ export class BP_MainCharacter extends TengriCharacter {
|
||||||
actionValueX: Float,
|
actionValueX: Float,
|
||||||
actionValueY: Float
|
actionValueY: Float
|
||||||
): void {
|
): void {
|
||||||
if (
|
this.CameraComponent.ProcessLookInput(
|
||||||
this.CameraManager.CurrentConfig.BehaviorType ===
|
new Vector(actionValueX, actionValueY, 0),
|
||||||
ETengriCameraBehavior.FreeLook
|
this.DeltaTime
|
||||||
) {
|
);
|
||||||
this.AddControllerYawInput(actionValueX);
|
}
|
||||||
this.AddControllerPitchInput(actionValueY);
|
|
||||||
}
|
/**
|
||||||
|
* Reset look input when look action is completed
|
||||||
|
*/
|
||||||
|
EnhancedInputActionLookCompleted(): void {
|
||||||
|
this.CameraComponent.ProcessLookInput(new Vector(0, 0, 0), this.DeltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -124,7 +132,7 @@ export class BP_MainCharacter extends TengriCharacter {
|
||||||
return new Vector(vec1.X + vec2.X, vec1.Y + vec2.Y, 0);
|
return new Vector(vec1.X + vec2.X, vec1.Y + vec2.Y, 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.MovementComponent.SetInputVector(
|
this.TengriMovement.SetInputVector(
|
||||||
CalculateResultMovementInputVector(
|
CalculateResultMovementInputVector(
|
||||||
MathLibrary.GetRightVector(
|
MathLibrary.GetRightVector(
|
||||||
this.GetControlRotation().roll,
|
this.GetControlRotation().roll,
|
||||||
|
|
@ -142,7 +150,7 @@ export class BP_MainCharacter extends TengriCharacter {
|
||||||
* Reset movement input when move action is completed
|
* Reset movement input when move action is completed
|
||||||
*/
|
*/
|
||||||
EnhancedInputActionMoveCompleted(): void {
|
EnhancedInputActionMoveCompleted(): void {
|
||||||
this.MovementComponent.SetInputVector(new Vector(0, 0, 0));
|
this.TengriMovement.SetInputVector(new Vector(0, 0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
EnhancedInputActionJumpTriggered(): void {
|
EnhancedInputActionJumpTriggered(): void {
|
||||||
|
|
@ -153,6 +161,24 @@ export class BP_MainCharacter extends TengriCharacter {
|
||||||
this.MovementComponent.SetJumpInput(false);
|
this.MovementComponent.SetJumpInput(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MovementComponentOnLanded(IsHeavy: boolean): void {
|
||||||
|
if (IsHeavy) {
|
||||||
|
SystemLibrary.PrintString(
|
||||||
|
'Boom! (Heavy)',
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
new LinearColor(1, 0, 0, 1)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
SystemLibrary.PrintString(
|
||||||
|
'Tap (Light)',
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
new LinearColor(0, 1, 0, 1)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize all systems when character spawns
|
* Initialize all systems when character spawns
|
||||||
* Order: Toast → Debug → Movement (movement last as it may generate debug output)
|
* Order: Toast → Debug → Movement (movement last as it may generate debug output)
|
||||||
|
|
@ -174,6 +200,11 @@ export class BP_MainCharacter extends TengriCharacter {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.CameraComponent.InitializeCameraSystem(
|
||||||
|
this.InputDeviceComponent,
|
||||||
|
this.DebugHUDComponent
|
||||||
|
);
|
||||||
|
|
||||||
CreateWidget(WBP_HUD).AddToViewport();
|
CreateWidget(WBP_HUD).AddToViewport();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -181,21 +212,60 @@ export class BP_MainCharacter extends TengriCharacter {
|
||||||
* Update all systems each frame
|
* Update all systems each frame
|
||||||
* Called by Unreal Engine game loop
|
* Called by Unreal Engine game loop
|
||||||
*/
|
*/
|
||||||
EventTick(): void {
|
EventTick(DeltaTime: Float): void {
|
||||||
|
this.DeltaTime = DeltaTime;
|
||||||
|
|
||||||
if (this.ShowDebugInfo) {
|
if (this.ShowDebugInfo) {
|
||||||
this.DebugHUDComponent.UpdateHUD(SystemLibrary.GetGameTimeInSeconds());
|
this.DebugHUDComponent.UpdateHUD(SystemLibrary.GetGameTimeInSeconds());
|
||||||
this.ToastSystemComponent.UpdateToastSystem();
|
this.ToastSystemComponent.UpdateToastSystem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.CameraComponent.UpdateCameraRotation(DeltaTime);
|
||||||
|
|
||||||
|
this.GetController().SetControlRotation(
|
||||||
|
new Rotator(
|
||||||
|
0,
|
||||||
|
this.CameraComponent.GetCameraRotation().Pitch,
|
||||||
|
this.CameraComponent.GetCameraRotation().Yaw
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
if (this.ShowDebugInfo) {
|
if (this.ShowDebugInfo) {
|
||||||
this.InputDeviceComponent.UpdateDebugPage();
|
this.InputDeviceComponent.UpdateDebugPage();
|
||||||
|
this.CameraComponent.UpdateDebugPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.SpringArm.TargetArmLength = MathLibrary.FInterpTo(
|
||||||
|
this.SpringArm.TargetArmLength,
|
||||||
|
this.bIsAiming ? this.AimArmLength : this.DefaultArmLength,
|
||||||
|
DeltaTime,
|
||||||
|
10.0
|
||||||
|
);
|
||||||
|
|
||||||
|
this.SpringArm.TargetOffset = MathLibrary.VInterpTo(
|
||||||
|
this.SpringArm.TargetOffset,
|
||||||
|
this.bIsAiming ? this.AimSocketOffset : this.DefaultSocketOffset,
|
||||||
|
DeltaTime,
|
||||||
|
10.0
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ════════════════════════════════════════════════════════════════════════════════════════
|
// ════════════════════════════════════════════════════════════════════════════════════════
|
||||||
// VARIABLES
|
// VARIABLES
|
||||||
// ════════════════════════════════════════════════════════════════════════════════════════
|
// ════════════════════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Camera system component - handles camera rotation and sensitivity
|
||||||
|
* @category Components
|
||||||
|
*/
|
||||||
|
SpringArm = new SpringArmComponent();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Camera system component - handles camera rotation and sensitivity
|
||||||
|
* @category Components
|
||||||
|
*/
|
||||||
|
CameraComponent = new AC_Camera();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Input device detection component - manages input device state and detection
|
* Input device detection component - manages input device state and detection
|
||||||
* @category Components
|
* @category Components
|
||||||
|
|
@ -208,6 +278,10 @@ export class BP_MainCharacter extends TengriCharacter {
|
||||||
*/
|
*/
|
||||||
ToastSystemComponent = new AC_ToastSystem();
|
ToastSystemComponent = new AC_ToastSystem();
|
||||||
|
|
||||||
|
TengriMovement = new TengriMovementComponent({
|
||||||
|
MovementConfig: DA_TengriMovementConfig,
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Debug HUD system - displays movement parameters and performance metrics
|
* Debug HUD system - displays movement parameters and performance metrics
|
||||||
* @category Components
|
* @category Components
|
||||||
|
|
@ -221,8 +295,37 @@ export class BP_MainCharacter extends TengriCharacter {
|
||||||
*/
|
*/
|
||||||
private ShowDebugInfo: boolean = true;
|
private ShowDebugInfo: boolean = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @category Camera
|
||||||
|
* @instanceEditable true
|
||||||
|
*/
|
||||||
|
private readonly DefaultArmLength: Float = 400.0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @category Camera
|
||||||
|
* @instanceEditable true
|
||||||
|
*/
|
||||||
|
private readonly AimArmLength: Float = 250.0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @category Camera
|
||||||
|
* @instanceEditable true
|
||||||
|
*/
|
||||||
|
private readonly DefaultSocketOffset: Vector = new Vector(0.0, 0.0, 0.0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @category Camera
|
||||||
|
* @instanceEditable true
|
||||||
|
*/
|
||||||
|
private readonly AimSocketOffset: Vector = new Vector(0.0, 100.0, 60.0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cached delta time from last tick - used for time-based calculations
|
||||||
|
*/
|
||||||
|
private DeltaTime: Float = 0.0;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super(new DA_CameraAiming());
|
super();
|
||||||
|
|
||||||
this.InteractAction = IA_Interact;
|
this.InteractAction = IA_Interact;
|
||||||
this.ThrowAction = IA_Throw;
|
this.ThrowAction = IA_Throw;
|
||||||
|
|
|
||||||
BIN
Content/Blueprints/BP_MainCharacter.uasset (Stored with Git LFS)
BIN
Content/Blueprints/BP_MainCharacter.uasset (Stored with Git LFS)
Binary file not shown.
|
|
@ -0,0 +1,323 @@
|
||||||
|
// Content/Camera/Components/AC_Camera.ts
|
||||||
|
|
||||||
|
import type { AC_DebugHUD } from '/Content/Debug/Components/AC_DebugHUD.ts';
|
||||||
|
import type { AC_InputDevice } from '/Content/Input/Components/AC_InputDevice.ts';
|
||||||
|
import { ActorComponent } from '/Content/UE/ActorComponent.ts';
|
||||||
|
import type { Float } from '/Content/UE/Float.ts';
|
||||||
|
import { MathLibrary } from '/Content/UE/MathLibrary.ts';
|
||||||
|
import { SystemLibrary } from '/Content/UE/SystemLibrary.ts';
|
||||||
|
import { Vector } from '/Content/UE/Vector.ts';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Camera System Component
|
||||||
|
* Deterministic camera control with smooth rotation and device-aware sensitivity
|
||||||
|
* Provides precise control over camera behavior for consistent experience
|
||||||
|
*/
|
||||||
|
export class AC_Camera extends ActorComponent {
|
||||||
|
// ════════════════════════════════════════════════════════════════════════════════════════
|
||||||
|
// FUNCTIONS
|
||||||
|
// ════════════════════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process look input and update camera rotation
|
||||||
|
* @param InputDelta - Input delta (X = Yaw, Y = Pitch)
|
||||||
|
* @param DeltaTime - Time since last frame
|
||||||
|
* @category Input Processing
|
||||||
|
*/
|
||||||
|
public ProcessLookInput(InputDelta: Vector, DeltaTime: Float): void {
|
||||||
|
if (this.IsInitialized) {
|
||||||
|
const invertMultiplier = this.InvertYAxis ? -1.0 : 1.0;
|
||||||
|
let sensitivity: Float = 0;
|
||||||
|
|
||||||
|
if (SystemLibrary.IsValid(this.InputDeviceComponent)) {
|
||||||
|
sensitivity = this.InputDeviceComponent.IsGamepad()
|
||||||
|
? this.GamepadSensitivity
|
||||||
|
: this.MouseSensitivity;
|
||||||
|
} else {
|
||||||
|
sensitivity = this.MouseSensitivity;
|
||||||
|
}
|
||||||
|
|
||||||
|
const CalculateTargetPitch = (
|
||||||
|
targetPitch: Float,
|
||||||
|
inputDeltaY: Float,
|
||||||
|
deltaTime: Float
|
||||||
|
): Float =>
|
||||||
|
targetPitch - inputDeltaY * sensitivity * invertMultiplier * deltaTime;
|
||||||
|
|
||||||
|
const CalculateTargetYaw = (
|
||||||
|
targetYaw: Float,
|
||||||
|
inputDeltaX: Float,
|
||||||
|
deltaTime: Float
|
||||||
|
): Float => targetYaw + inputDeltaX * sensitivity * deltaTime;
|
||||||
|
|
||||||
|
this.TargetPitch = MathLibrary.ClampFloat(
|
||||||
|
CalculateTargetPitch(this.TargetPitch, InputDelta.Y, DeltaTime),
|
||||||
|
this.PitchMin,
|
||||||
|
this.PitchMax
|
||||||
|
);
|
||||||
|
|
||||||
|
this.TargetYaw = CalculateTargetYaw(
|
||||||
|
this.TargetYaw,
|
||||||
|
InputDelta.X,
|
||||||
|
DeltaTime
|
||||||
|
);
|
||||||
|
|
||||||
|
this.InputMagnitude = MathLibrary.VectorLength(InputDelta);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update camera rotation with smooth interpolation
|
||||||
|
* @param DeltaTime - Time since last frame
|
||||||
|
* @category Camera Updates
|
||||||
|
*/
|
||||||
|
public UpdateCameraRotation(DeltaTime: Float): void {
|
||||||
|
if (this.IsInitialized) {
|
||||||
|
if (this.SmoothingSpeed > 0) {
|
||||||
|
// Smooth interpolation to target rotation
|
||||||
|
this.CurrentPitch = MathLibrary.FInterpTo(
|
||||||
|
this.CurrentPitch,
|
||||||
|
this.TargetPitch,
|
||||||
|
DeltaTime,
|
||||||
|
this.SmoothingSpeed
|
||||||
|
);
|
||||||
|
|
||||||
|
this.CurrentYaw = MathLibrary.FInterpTo(
|
||||||
|
this.CurrentYaw,
|
||||||
|
this.TargetYaw,
|
||||||
|
DeltaTime,
|
||||||
|
this.SmoothingSpeed
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// Instant rotation (no smoothing)
|
||||||
|
this.CurrentPitch = this.TargetPitch;
|
||||||
|
this.CurrentYaw = this.TargetYaw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get current camera rotation for applying to SpringArm
|
||||||
|
* @returns Current camera rotation values
|
||||||
|
* @category Public Interface
|
||||||
|
* @pure true
|
||||||
|
*/
|
||||||
|
public GetCameraRotation(): { Pitch: Float; Yaw: Float } {
|
||||||
|
return {
|
||||||
|
Pitch: this.CurrentPitch,
|
||||||
|
Yaw: this.CurrentYaw,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if camera is currently rotating
|
||||||
|
* @returns True if there's active rotation input
|
||||||
|
* @category State Queries
|
||||||
|
* @pure true
|
||||||
|
*/
|
||||||
|
public IsCameraRotating(): boolean {
|
||||||
|
return this.InputMagnitude > 0.01;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize camera system with default settings
|
||||||
|
* @category System Setup
|
||||||
|
*/
|
||||||
|
public InitializeCameraSystem(
|
||||||
|
InputDeviceRef: AC_InputDevice,
|
||||||
|
DebugComponentRef: AC_DebugHUD
|
||||||
|
): void {
|
||||||
|
this.InputDeviceComponent = InputDeviceRef;
|
||||||
|
this.DebugHUDComponent = DebugComponentRef;
|
||||||
|
|
||||||
|
this.IsInitialized = true;
|
||||||
|
|
||||||
|
if (SystemLibrary.IsValid(this.DebugHUDComponent)) {
|
||||||
|
this.DebugHUDComponent.AddDebugPage(
|
||||||
|
this.DebugPageID,
|
||||||
|
'Camera System',
|
||||||
|
60
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update debug HUD with current camera info
|
||||||
|
* @category Debug
|
||||||
|
*/
|
||||||
|
public UpdateDebugPage(): void {
|
||||||
|
if (SystemLibrary.IsValid(this.DebugHUDComponent)) {
|
||||||
|
if (
|
||||||
|
this.DebugHUDComponent.ShouldUpdatePage(
|
||||||
|
this.DebugPageID,
|
||||||
|
SystemLibrary.GetGameTimeInSeconds()
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
this.DebugHUDComponent.UpdatePageContent(
|
||||||
|
this.DebugPageID,
|
||||||
|
`Current Device: ${SystemLibrary.IsValid(this.InputDeviceComponent) ? this.InputDeviceComponent.GetCurrentInputDevice() : 'Input Device Component Not Found'}\n` +
|
||||||
|
`Sensitivity: ${SystemLibrary.IsValid(this.InputDeviceComponent) && this.InputDeviceComponent.IsGamepad() ? this.GamepadSensitivity : this.MouseSensitivity}\n` +
|
||||||
|
`Pitch: ${this.GetCameraRotation().Pitch}°\n` +
|
||||||
|
`Yaw: ${this.GetCameraRotation().Yaw}°\n` +
|
||||||
|
`Is Rotating: ${this.IsCameraRotating() ? 'Yes' : 'No'}\n` +
|
||||||
|
`Smoothing: ${this.SmoothingSpeed}\n` +
|
||||||
|
`Invert Y: ${this.InvertYAxis ? 'Yes' : 'No'}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get camera configuration and state data for testing purposes
|
||||||
|
* Provides read-only access to private variables for automated tests
|
||||||
|
* Only includes essential data needed for test validation
|
||||||
|
* @category Debug
|
||||||
|
* @returns Object containing camera settings (sensitivity, pitch limits) for test assertions
|
||||||
|
*/
|
||||||
|
public GetTestData(): {
|
||||||
|
MouseSensitivity: Float;
|
||||||
|
GamepadSensitivity: Float;
|
||||||
|
PitchMin: Float;
|
||||||
|
PitchMax: Float;
|
||||||
|
} {
|
||||||
|
return {
|
||||||
|
MouseSensitivity: this.MouseSensitivity,
|
||||||
|
GamepadSensitivity: this.GamepadSensitivity,
|
||||||
|
PitchMin: this.PitchMin,
|
||||||
|
PitchMax: this.PitchMax,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// ════════════════════════════════════════════════════════════════════════════════════════
|
||||||
|
// VARIABLES
|
||||||
|
// ════════════════════════════════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mouse sensitivity multiplier for camera rotation
|
||||||
|
* Higher values result in faster camera movement with mouse input
|
||||||
|
* Typical range: 50.0 (slow) - 200.0 (fast)
|
||||||
|
* @category Camera Config
|
||||||
|
* @instanceEditable true
|
||||||
|
* @default 100.0
|
||||||
|
*/
|
||||||
|
private readonly MouseSensitivity: Float = 100.0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gamepad sensitivity multiplier for camera rotation
|
||||||
|
* Higher than mouse sensitivity to compensate for analog stick precision
|
||||||
|
* Typical range: 100.0 (slow) - 300.0 (fast)
|
||||||
|
* @category Camera Config
|
||||||
|
* @instanceEditable true
|
||||||
|
* @default 150.0
|
||||||
|
*/
|
||||||
|
private readonly GamepadSensitivity: Float = 150.0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invert vertical axis for camera rotation
|
||||||
|
* When true, pushing up on input rotates camera down and vice versa
|
||||||
|
* Common preference for flight-sim style controls
|
||||||
|
* @category Camera Config
|
||||||
|
* @instanceEditable true
|
||||||
|
* @default false
|
||||||
|
*/
|
||||||
|
private readonly InvertYAxis: boolean = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Minimum pitch angle in degrees (looking down)
|
||||||
|
* Prevents camera from rotating beyond this angle
|
||||||
|
* Set to -89° to avoid gimbal lock at -90°
|
||||||
|
* @category Camera Config
|
||||||
|
* @instanceEditable true
|
||||||
|
* @default -89.0
|
||||||
|
*/
|
||||||
|
private readonly PitchMin: Float = -89.0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximum pitch angle in degrees (looking up)
|
||||||
|
* Prevents camera from rotating beyond this angle
|
||||||
|
* Set to +89° to avoid gimbal lock at +90°
|
||||||
|
* @category Camera Config
|
||||||
|
* @instanceEditable true
|
||||||
|
* @default 89.0
|
||||||
|
*/
|
||||||
|
private readonly PitchMax: Float = 89.0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Speed of smooth interpolation to target rotation
|
||||||
|
* Higher values make camera more responsive but less smooth
|
||||||
|
* Set to 0 for instant rotation without interpolation
|
||||||
|
* Typical range: 10.0 (smooth) - 30.0 (responsive)
|
||||||
|
* @category Camera Config
|
||||||
|
* @instanceEditable true
|
||||||
|
* @default 20.0
|
||||||
|
*/
|
||||||
|
private readonly SmoothingSpeed: Float = 20.0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Current pitch angle for rendering
|
||||||
|
* Smoothly interpolates towards TargetPitch based on SmoothingSpeed
|
||||||
|
* Updated every frame by UpdateCameraRotation()
|
||||||
|
* @category Camera State
|
||||||
|
*/
|
||||||
|
private CurrentPitch: Float = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Current yaw angle for rendering
|
||||||
|
* Smoothly interpolates towards TargetYaw based on SmoothingSpeed
|
||||||
|
* Updated every frame by UpdateCameraRotation()
|
||||||
|
* @category Camera State
|
||||||
|
*/
|
||||||
|
private CurrentYaw: Float = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Target pitch angle from player input
|
||||||
|
* Updated by ProcessLookInput() based on input delta
|
||||||
|
* Clamped to PitchMin/PitchMax range
|
||||||
|
* @category Camera State
|
||||||
|
*/
|
||||||
|
private TargetPitch: Float = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Target yaw angle from player input
|
||||||
|
* Updated by ProcessLookInput() based on input delta
|
||||||
|
* No clamping - can rotate freely beyond 360°
|
||||||
|
* @category Camera State
|
||||||
|
*/
|
||||||
|
private TargetYaw: Float = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Magnitude of current input vector
|
||||||
|
* Used by IsCameraRotating() to detect active camera input
|
||||||
|
* Cached to avoid recalculating VectorLength every frame
|
||||||
|
* @category Camera State
|
||||||
|
* @default 0.0
|
||||||
|
*/
|
||||||
|
private InputMagnitude: Float = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* System initialization state flag
|
||||||
|
* @category Camera State
|
||||||
|
*/
|
||||||
|
private IsInitialized: boolean = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to input device component for device detection
|
||||||
|
* Set externally, used for sensitivity adjustments
|
||||||
|
* @category Components
|
||||||
|
*/
|
||||||
|
public InputDeviceComponent: AC_InputDevice | null = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to debug HUD component for displaying camera info
|
||||||
|
* Optional, used for debugging purposes
|
||||||
|
* @category Components
|
||||||
|
*/
|
||||||
|
public DebugHUDComponent: AC_DebugHUD | null = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Debug page identifier for organizing debug output
|
||||||
|
* Used by debug HUD to categorize information
|
||||||
|
* @category Debug
|
||||||
|
*/
|
||||||
|
public readonly DebugPageID: string = 'CameraInfo';
|
||||||
|
}
|
||||||
Binary file not shown.
|
|
@ -1,25 +0,0 @@
|
||||||
// Content/Camera/BP_CameraZone.ts
|
|
||||||
|
|
||||||
import { Actor } from '/Content/UE/Actor.ts';
|
|
||||||
import type { TengriCharacter } from '/Source/TengriPlatformer/Character/TengriCharacter.ts';
|
|
||||||
import type { TengriCameraConfig } from '/Source/TengriPlatformer/Camera/Core/TengriCameraConfig.ts';
|
|
||||||
|
|
||||||
export class BP_CameraZone extends Actor {
|
|
||||||
constructor(ZoneConfig: TengriCameraConfig) {
|
|
||||||
super();
|
|
||||||
|
|
||||||
this.ZoneConfig = ZoneConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
EventActorBeginOverlap(OtherActor: Actor): void {
|
|
||||||
(OtherActor as TengriCharacter).CameraManager.SetCameraConfig(
|
|
||||||
this.ZoneConfig
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
EventActorEndOverlap(OtherActor: Actor): void {
|
|
||||||
(OtherActor as TengriCharacter).CameraManager.SetCameraConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly ZoneConfig: TengriCameraConfig;
|
|
||||||
}
|
|
||||||
BIN
Content/Camera/BP_CameraZone.uasset (Stored with Git LFS)
BIN
Content/Camera/BP_CameraZone.uasset (Stored with Git LFS)
Binary file not shown.
|
|
@ -1,23 +0,0 @@
|
||||||
import {
|
|
||||||
ETengriCameraBehavior,
|
|
||||||
TengriCameraConfig,
|
|
||||||
} from '/Source/TengriPlatformer/Camera/Core/TengriCameraConfig.ts';
|
|
||||||
import { Vector } from '/Content/UE/Vector.ts';
|
|
||||||
import { Rotator } from '/Content/UE/Rotator.ts';
|
|
||||||
|
|
||||||
export class DA_CameraAiming extends TengriCameraConfig {
|
|
||||||
override BehaviorType = ETengriCameraBehavior.FreeLook;
|
|
||||||
|
|
||||||
override FixedRotation = new Rotator(0, -15, -90);
|
|
||||||
override TargetArmLength = 250;
|
|
||||||
override SocketOffset = new Vector(0, 100, 60);
|
|
||||||
|
|
||||||
override TransitionSpeed = 2;
|
|
||||||
|
|
||||||
override bEnableLag = false;
|
|
||||||
|
|
||||||
override DeadZoneExtent = new Vector(200, 0, 150);
|
|
||||||
override DeadZoneOffset = new Vector(0, 0, 50);
|
|
||||||
|
|
||||||
override bDrawDebugBox = false;
|
|
||||||
}
|
|
||||||
BIN
Content/Camera/DA_CameraAiming.uasset (Stored with Git LFS)
BIN
Content/Camera/DA_CameraAiming.uasset (Stored with Git LFS)
Binary file not shown.
|
|
@ -1,23 +0,0 @@
|
||||||
import {
|
|
||||||
ETengriCameraBehavior,
|
|
||||||
TengriCameraConfig,
|
|
||||||
} from '/Source/TengriPlatformer/Camera/Core/TengriCameraConfig.ts';
|
|
||||||
import { Vector } from '/Content/UE/Vector.ts';
|
|
||||||
import { Rotator } from '/Content/UE/Rotator.ts';
|
|
||||||
|
|
||||||
export class DA_CameraDefault extends TengriCameraConfig {
|
|
||||||
override BehaviorType = ETengriCameraBehavior.FreeLook;
|
|
||||||
|
|
||||||
override FixedRotation = new Rotator(0, -15, -90);
|
|
||||||
override TargetArmLength = 400;
|
|
||||||
override SocketOffset = new Vector(0, 0, 0);
|
|
||||||
|
|
||||||
override TransitionSpeed = 2;
|
|
||||||
|
|
||||||
override bEnableLag = false;
|
|
||||||
|
|
||||||
override DeadZoneExtent = new Vector(200, 0, 150);
|
|
||||||
override DeadZoneOffset = new Vector(0, 0, 50);
|
|
||||||
|
|
||||||
override bDrawDebugBox = false;
|
|
||||||
}
|
|
||||||
BIN
Content/Camera/DA_CameraDefault.uasset (Stored with Git LFS)
BIN
Content/Camera/DA_CameraDefault.uasset (Stored with Git LFS)
Binary file not shown.
|
|
@ -1,24 +0,0 @@
|
||||||
import {
|
|
||||||
ETengriCameraBehavior,
|
|
||||||
TengriCameraConfig,
|
|
||||||
} from '/Source/TengriPlatformer/Camera/Core/TengriCameraConfig.ts';
|
|
||||||
import { Vector } from '/Content/UE/Vector.ts';
|
|
||||||
import { Rotator } from '/Content/UE/Rotator.ts';
|
|
||||||
|
|
||||||
export class DA_CameraScroller extends TengriCameraConfig {
|
|
||||||
override BehaviorType = ETengriCameraBehavior.FreeLook;
|
|
||||||
|
|
||||||
override FixedRotation = new Rotator(0, 0, 0);
|
|
||||||
override TargetArmLength = 1200;
|
|
||||||
override SocketOffset = new Vector(0, 0, 100);
|
|
||||||
|
|
||||||
override TransitionSpeed = 1.5;
|
|
||||||
|
|
||||||
override bEnableLag = true;
|
|
||||||
override LagSpeed = 5;
|
|
||||||
|
|
||||||
override DeadZoneExtent = new Vector(100, 300, 100);
|
|
||||||
override DeadZoneOffset = new Vector(0, 0, 50);
|
|
||||||
|
|
||||||
override bDrawDebugBox = false;
|
|
||||||
}
|
|
||||||
BIN
Content/Camera/DA_CameraSideScroller.uasset (Stored with Git LFS)
BIN
Content/Camera/DA_CameraSideScroller.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/Levels/TestLevel.umap (Stored with Git LFS)
BIN
Content/Levels/TestLevel.umap (Stored with Git LFS)
Binary file not shown.
|
|
@ -5,34 +5,20 @@ import { TengriMovementConfig } from '/Source/TengriPlatformer/Movement/Core/Ten
|
||||||
export class DA_TengriMovementConfig extends TengriMovementConfig {
|
export class DA_TengriMovementConfig extends TengriMovementConfig {
|
||||||
override MaxSpeed = 800.0;
|
override MaxSpeed = 800.0;
|
||||||
override Acceleration = 2048.0;
|
override Acceleration = 2048.0;
|
||||||
override Friction = 6.0;
|
override Friction = 8.0;
|
||||||
|
override Gravity = 980.0;
|
||||||
override RotationSpeed = 360.0;
|
override RotationSpeed = 360.0;
|
||||||
override MinSpeedForRotation = 10.0;
|
override MinSpeedForRotation = 10.0;
|
||||||
override SteepSlopeSlideFactor = 0.0;
|
override SteepSlopeSlideFactor = 0.0;
|
||||||
|
|
||||||
override MaxJumpHeight = 1000.0;
|
override CapsuleRadius = 34.0;
|
||||||
override MinJumpHeight = 40;
|
override CapsuleHalfHeight = 88.0;
|
||||||
override TimeToJumpApex = 0.5;
|
|
||||||
|
|
||||||
override CoyoteTime = 0.15;
|
|
||||||
override JumpBufferTime = 0.15;
|
|
||||||
|
|
||||||
override AirControl = 0.15;
|
|
||||||
override AirFriction = 0.1;
|
|
||||||
override FallingGravityScale = 1.5;
|
|
||||||
override TerminalVelocity = 2000;
|
|
||||||
override HeavyLandVelocityThreshold = -1000;
|
|
||||||
|
|
||||||
override MaxSlideIterations = 3;
|
override MaxSlideIterations = 3;
|
||||||
override MaxStepHeight = 45.0;
|
override MaxStepHeight = 45.0;
|
||||||
|
|
||||||
override GroundSnapDistance = 20.0;
|
override GroundSnapDistance = 20.0;
|
||||||
override GroundSnapOffset = 0.15;
|
override GroundSnapOffset = 0.15;
|
||||||
|
|
||||||
override PhysicsTickRate = 120;
|
|
||||||
override MaxAccumulatedTime = 0.1;
|
|
||||||
override bEnableInterpolation = true;
|
|
||||||
|
|
||||||
override WalkableAngleDeg = 50.0;
|
override WalkableAngleDeg = 50.0;
|
||||||
override SteepSlopeAngleDeg = 85.0;
|
override SteepSlopeAngleDeg = 85.0;
|
||||||
override WallAngleDeg = 95.0;
|
override WallAngleDeg = 95.0;
|
||||||
|
|
|
||||||
BIN
Content/Movement/DA_TengriMovementConfig.uasset (Stored with Git LFS)
BIN
Content/Movement/DA_TengriMovementConfig.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/Floor_400x400.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Architecture/Floor_400x400.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/Pillar_50x500.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Architecture/Pillar_50x500.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/SM_AssetPlatform.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Architecture/SM_AssetPlatform.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/Wall_400x200.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Architecture/Wall_400x200.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/Wall_400x300.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Architecture/Wall_400x300.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/Wall_400x400.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Architecture/Wall_400x400.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/Wall_500x500.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Architecture/Wall_500x500.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/Wall_Door_400x300.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Architecture/Wall_Door_400x300.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/Wall_Door_400x400.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Architecture/Wall_Door_400x400.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/Wall_Window_400x300.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Architecture/Wall_Window_400x300.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Architecture/Wall_Window_400x400.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Architecture/Wall_Window_400x400.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Collapse01.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Collapse01.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Collapse02.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Collapse02.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Collapse_Cue.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Collapse_Cue.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Explosion01.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Explosion01.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Explosion02.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Explosion02.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Explosion_Cue.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Explosion_Cue.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Fire01.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Fire01.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Fire01_Cue.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Fire01_Cue.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Fire_Sparks01.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Fire_Sparks01.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Fire_Sparks01_Cue.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Fire_Sparks01_Cue.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Light01.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Light01.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Light01_Cue.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Light01_Cue.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Light02.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Light02.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Light02_Cue.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Light02_Cue.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Smoke01.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Smoke01.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Smoke01_Cue.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Smoke01_Cue.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Starter_Background_Cue.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Starter_Background_Cue.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Starter_Birds01.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Starter_Birds01.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Starter_Music01.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Starter_Music01.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Starter_Music_Cue.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Starter_Music_Cue.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Starter_Wind05.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Starter_Wind05.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Starter_Wind06.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Starter_Wind06.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Steam01.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Steam01.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Audio/Steam01_Cue.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Audio/Steam01_Cue.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Assets/FogBrightnessLUT.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Assets/M_LightStage_Arrows.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Black.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_HDRI.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Assets/M_LightStage_Skybox_Master.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Assets/SM_Arrows.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Assets/Skybox.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Assets/Skybox.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Assets/SunlightColorLUT.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/BP_LightStudio.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/BP_LightStudio.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Blueprint_CeilingLight.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Blueprint_Effect_Explosion.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Blueprint_Effect_Explosion.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Blueprint_Effect_Fire.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Blueprint_Effect_Fire.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Blueprint_Effect_Smoke.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Blueprint_Effect_Smoke.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Blueprint_Effect_Sparks.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Blueprint_Effect_Sparks.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Blueprint_Effect_Steam.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Blueprint_Effect_Steam.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Blueprints/Blueprint_WallSconce.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Blueprints/Blueprint_WallSconce.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset (Stored with Git LFS)
BIN
Content/StarterContent/HDRI/HDRI_Epic_Courtyard_Daylight.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Maps/Advanced_Lighting.umap (Stored with Git LFS)
BIN
Content/StarterContent/Maps/Advanced_Lighting.umap (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Maps/Advanced_Lighting_BuiltData.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Maps/Advanced_Lighting_BuiltData.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Maps/Minimal_Default.umap (Stored with Git LFS)
BIN
Content/StarterContent/Maps/Minimal_Default.umap (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Maps/Minimal_Default_BuiltData.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Maps/Minimal_Default_BuiltData.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Maps/StarterMap.umap (Stored with Git LFS)
BIN
Content/StarterContent/Maps/StarterMap.umap (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Maps/StarterMap_BuiltData.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Maps/StarterMap_BuiltData.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_AssetPlatform.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_AssetPlatform.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Basic_Floor.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Basic_Floor.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Basic_Wall.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Basic_Wall.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Brick_Clay_Beveled.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Brick_Clay_New.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Brick_Clay_New.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Brick_Clay_Old.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Brick_Clay_Old.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Brick_Cut_Stone.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Brick_Hewn_Stone.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Ceramic_Tile_Checker.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_CobbleStone_Pebble.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_CobbleStone_Rough.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_CobbleStone_Rough.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_CobbleStone_Smooth.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_ColorGrid_LowSpec.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Concrete_Grime.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Concrete_Grime.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Concrete_Panels.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Concrete_Panels.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Concrete_Poured.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Concrete_Poured.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Concrete_Tiles.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Concrete_Tiles.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Glass.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Glass.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Ground_Grass.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Ground_Grass.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Ground_Gravel.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Ground_Gravel.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Ground_Moss.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Ground_Moss.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Metal_Brushed_Nickel.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Metal_Burnished_Steel.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Metal_Chrome.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Metal_Chrome.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Metal_Copper.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Metal_Copper.uasset (Stored with Git LFS)
Binary file not shown.
BIN
Content/StarterContent/Materials/M_Metal_Gold.uasset (Stored with Git LFS)
BIN
Content/StarterContent/Materials/M_Metal_Gold.uasset (Stored with Git LFS)
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue