This comprehensive API reference covers all public C++ classes, Blueprint functions, and interfaces available in OmniShift. The API is designed to be both beginner-friendly for rapid prototyping and extensible for advanced custom implementations.
Location: Source/OmniShift/Public/Characters/GASPAC_CharacterBase.h
Description: Main character base class that integrates all OmniShift systems. This is the primary class you'll inherit from for custom characters.
// Core Components
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
UGASPAC_AbilitySystemComponent* AbilitySystemComponent = nullptr;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
UGASPAC_AttributeSet_Core* AttributeSetCore = nullptr;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
UGASPAC_BodyProcessingComponent* BodyProcessingComponent = nullptr;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
UGASPAC_CameraManagerComponent* CameraManagerComponent = nullptr;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
UGASPAC_InteractionHandComponent* InteractionHandComponent = nullptr;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
UGASPAC_ProceduralRigComponent* ProceduralRigComponent = nullptr;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
UGASPAC_ProceduralAnimationComponent* ProceduralAnimationComponent = nullptr;
// Configuration Data Assets
UPROPERTY(EditAnywhere, BlueprintReadWrite)
UGASPAC_CharacterConfigDataAsset* CharacterConfig = nullptr;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
UGASPAC_RigConfigDataAsset* RigConfig = nullptr;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
UGASPAC_LocomotionProfileDataAsset* LocomotionProfile = nullptr;
// Character initialization
UFUNCTION(BlueprintCallable, Category = "Character")
virtual void InitializeCharacter();
// Configuration application
UFUNCTION(BlueprintCallable, Category = "Character")
virtual void ApplyCharacterConfig();
// Character state management
UFUNCTION(BlueprintCallable, Category = "Character")
virtual void SetCharacterState(EGASPAC_CharacterState NewState);
UFUNCTION(BlueprintPure, Category = "Character")
virtual EGASPAC_CharacterState GetCharacterState() const;
// Movement control
UFUNCTION(BlueprintCallable, Category = "Character")
virtual void SetMovementSpeed(float NewSpeed);
UFUNCTION(BlueprintCallable, Category = "Character")
virtual void SetJumpStrength(float NewStrength);
// Camera system integration
UFUNCTION(BlueprintCallable, Category = "Character")
virtual void UpdateCamera(float DeltaTime);
// Network replication
UFUNCTION(Server, Reliable, BlueprintCallable)
virtual void Server_SetCharacterState(const FGASPAC_CharacterState& NewState);
// Character state events
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnCharacterEventDelegate, AActor*, Character);
UPROPERTY(BlueprintAssignable)
FOnCharacterEventDelegate OnDeath;
UPROPERTY(BlueprintAssignable)
FOnCharacterEventDelegate OnRespawn;
UPROPERTY(BlueprintAssignable)
FOnCharacterEventDelegate OnStagger;
UPROPERTY(BlueprintAssignable)
FOnCharacterEventDelegate OnEnterRagdoll;
UPROPERTY(BlueprintAssignable)
FOnCharacterEventDelegate OnExitRagdoll;
Location: Source/OmniShift/Public/Components/GASPAC_AbilitySystemComponent.h
Description: Simplified Gameplay Ability System integration component.
// Ability management
UFUNCTION(BlueprintCallable, Category = "Ability System")
bool ActivateAbility(FGameplayTag AbilityTag, int32 AbilityLevel = 1);
UFUNCTION(BlueprintCallable, Category = "Ability System")
bool CancelAbility(FGameplayTag AbilityTag);
UFUNCTION(BlueprintCallable, Category = "Ability System")
void GrantAbility(TSubclassOf<UGameplayAbility> AbilityClass);
UFUNCTION(BlueprintCallable, Category = "Ability System")
void GrantAbilities(const TArray<TSubclassOf<UGameplayAbility>>& Abilities);
// Ability state
UFUNCTION(BlueprintPure, Category = "Ability System")
bool IsAbilityActive(FGameplayTag AbilityTag) const;
UFUNCTION(BlueprintPure, Category = "Ability System")
bool IsAbilityReady(FGameplayTag AbilityTag) const;
UFUNCTION(BlueprintPure, Category = "Ability System")
bool IsAbilityOnCooldown(FGameplayTag AbilityTag) const;
// Cooldown management
UFUNCTION(BlueprintCallable, Category = "Ability System")
float GetAbilityCooldownRemaining(FGameplayTag AbilityTag) const;
UFUNCTION(BlueprintCallable, Category = "Ability System")
void SetAbilityCooldown(FGameplayTag AbilityTag, float Duration);
Location: Source/OmniShift/Public/Components/GASPAC_BodyProcessingComponent.h
Description: Handles full-body awareness and IK processing for realistic character movement.
// IK system control
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void SetIKSystemEnabled(EGASPAC_IKType IKType, bool bEnabled);
UFUNCTION(BlueprintPure, Category = "Body Processing")
bool IsIKSystemEnabled(EGASPAC_IKType IKType) const;
// Head IK
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void SetLookAtTarget(FVector TargetLocation, float InterpolationSpeed = 5.0f);
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void ClearLookAtTarget();
UFUNCTION(BlueprintPure, Category = "Body Processing")
bool HasLookAtTarget() const;
// Foot IK
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void SetFootIKEnabled(bool bEnabled);
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void SetFootIKHeightOffset(float Offset);
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void SetFootIKDistance(float Distance);
// Hand IK
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void SetHandIKTarget(EGASPAC_HandSide HandSide, FVector TargetLocation);
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void ClearHandIKTarget(EGASPAC_HandSide HandSide);
// Spine IK
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void SetSpineIKEnabled(bool bEnabled);
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void SetSpineBendAmount(float Amount);
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void SetSpineLeanDirection(const FVector& Direction);
// Performance and quality
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void SetIKQuality(EGASPAC_IKQuality Quality);
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void SetUpdateFrequency(float Frequency);
UFUNCTION(BlueprintCallable, Category = "Body Processing")
void EnableDistanceLOD(bool bEnabled);
UFUNCTION(BlueprintPure, Category = "Body Processing")
EGASPAC_IKQuality GetIKQuality() const;
UFUNCTION(BlueprintPure, Category = "Body Processing")
float GetUpdateFrequency() const;
Location: Source/OmniShift/Public/Components/GASPAC_CameraManagerComponent.h
Description: Multi-mode camera system with smooth transitions and collision handling.
// Camera mode control
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void SetCameraMode(EGASPAC_CameraMode NewMode, float TransitionDuration = 1.0f);
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void SwitchCameraMode(EGASPAC_CameraMode NewMode);
UFUNCTION(BlueprintPure, Category = "Camera Manager")
EGASPAC_CameraMode GetCurrentMode() const;
// Camera transitions
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void SetTransitionDuration(float Duration);
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void SetEasingFunction(EGASPAC_EasingFunction Easing);
UFUNCTION(BlueprintPure, Category = "Camera Manager")
bool IsTransitioning() const;
UFUNCTION(BlueprintPure, Category = "Camera Manager")
float GetTransitionProgress() const;
// Camera settings
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void SetFieldOfView(float NewFOV);
UFUNCTION(BlueprintPure, Category = "Camera Manager")
float GetFieldOfView() const;
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void SetCameraDistance(float NewDistance);
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void ZoomCamera(float ZoomDelta);
// Shoulder control
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void SwapShoulder();
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void SetShoulderSide(bool bRightShoulder);
UFUNCTION(BlueprintPure, Category = "Camera Manager")
bool IsRightShoulder() const;
// Free look
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void StartFreeLook();
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void StopFreeLook();
UFUNCTION(BlueprintCallable, Category = "Camera Manager")
void UpdateFreeLook(float Yaw, float Pitch);
UFUNCTION(BlueprintPure, Category = "Camera Manager")
bool IsFreeLooking() const;
Location: Source/OmniShift/Public/Components/GASPAC_ProceduralRigComponent.h
Description: Handles real-time bone manipulation and IK chain solving.
// Bone manipulation
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void SetBoneTransform(FName BoneName, FTransform Transform, EGASPAC_BoneSpace Space = EGASPAC_BoneSpace::WorldSpace);
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void SetBoneLocation(FName BoneName, FVector Location, EGASPAC_BoneSpace Space = EGASPAC_BoneSpace::WorldSpace);
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void SetBoneRotation(FName BoneName, FRotator Rotation, EGASPAC_BoneSpace Space = EGASPAC_BoneSpace::WorldSpace);
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void SetBoneScale(FName BoneName, FVector Scale);
UFUNCTION(BlueprintPure, Category = "Procedural Rig")
FTransform GetBoneTransform(FName BoneName, EGASPAC_BoneSpace Space = EGASPAC_BoneSpace::WorldSpace) const;
// IK chain management
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
bool ApplyIKChain(const FGASPAC_IKChain& IKChain, FVector TargetPosition, float Alpha = 1.0f);
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void RemoveIKChain(const FName& ChainName);
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void ClearAllIKChains();
UFUNCTION(BlueprintPure, Category = "Procedural Rig")
bool HasIKChain(const FName& ChainName) const;
// Bone constraints
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void SetBoneConstraints(FName BoneName, const FGASPAC_BoneConstraints& Constraints);
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void ClearBoneConstraints(FName BoneName);
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void EnableBoneConstraint(FName BoneName, bool bEnabled);
// Rig management
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void SetRigEnabled(bool bEnabled);
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void UpdateRig();
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void ResetRigToBindPose();
// Performance control
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void SetMaxIKIterations(int32 MaxIterations);
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void SetIKPrecision(float Precision);
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void SetUpdateFrequency(float Frequency);
UFUNCTION(BlueprintCallable, Category = "Procedural Rig")
void EnableDistanceLOD(bool bEnabled);
Location: Source/OmniShift/Public/Components/GASPAC_ProceduralAnimationComponent.h
Description: Manages animation states and transitions for procedural character animation.
// Locomotion state control
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void SetLocomotionState(EGASPAC_LocomotionState NewState, float BlendTime = 0.25f);
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void TransitionToState(EGASPAC_LocomotionState TargetState, EGASPAC_LocomotionBlendMode BlendMode = EGASPAC_LocomotionBlendMode::EaseInOut);
UFUNCTION(BlueprintPure, Category = "Procedural Animation")
EGASPAC_LocomotionState GetCurrentLocomotionState() const;
UFUNCTION(BlueprintPure, Category = "Procedural Animation")
bool IsTransitioning() const;
UFUNCTION(BlueprintPure, Category = "Procedural Animation")
float GetTransitionProgress() const;
// Animation modifiers
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void ApplyStateModifier(const FGASPAC_LocomotionBoneModifier& Modifier);
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void RemoveStateModifier(const FName& ModifierName);
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void ClearAllStateModifiers();
// Animation configuration
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void SetStateConfig(EGASPAC_LocomotionState State, const FGASPAC_LocomotionStateConfig& Config);
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void ApplyLocomotionProfile(UGASPAC_LocomotionProfileDataAsset* Profile);
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void SetBlendMode(EGASPAC_LocomotionBlendMode BlendMode);
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void SetDefaultBlendTime(float BlendTime);
// Animation control
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void PlayAnimation(EGASPAC_LocomotionState State, bool bLoop = true);
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void StopAnimation();
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void PauseAnimation();
UFUNCTION(BlueprintCallable, Category = "Procedural Animation")
void ResumeAnimation();
Location: Source/OmniShift/Public/Components/GASPAC_InteractionHandComponent.h
Description: Trespasser-style F-key interaction system with physics-based object manipulation.
// Core interaction
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
bool StartInteraction(AActor* TargetActor = nullptr, FName InteractionPoint = NAME_None);
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
void StopInteraction();
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
void GrabObject();
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
void ReleaseObject();
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
void UseObject();
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
void PressObject();
// Hand control
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
void ActivateHand();
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
void DeactivateHand();
UFUNCTION(BlueprintPure, Category = "Interaction Hand")
bool IsHandActive() const;
UFUNCTION(BlueprintPure, Category = "Interaction Hand")
bool IsHoldingObject() const;
UFUNCTION(BlueprintPure, Category = "Interaction Hand")
AActor* GetHeldObject() const;
// Configuration
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
void SetInteractionSettings(const FGASPAC_InteractionSettings& NewSettings);
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
void SetInteractionDistance(float NewDistance);
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
void SetGrabStrength(float NewStrength);
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
void SetHandIKTarget(FName TargetBoneName);
// Object detection
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
TArray<AActor*> GetNearbyInteractableObjects();
UFUNCTION(BlueprintCallable, Category = "Interaction Hand")
bool CanInteractWith(AActor* TargetActor) const;
UFUNCTION(BlueprintPure, Category = "Interaction Hand")
const FGASPAC_InteractionData& GetCurrentInteractionData() const;
Location: Source/OmniShift/Public/DataAssets/GASPAC_CharacterConfigDataAsset.h
Description: Main character configuration data asset containing movement, abilities, and core settings.
// Core properties
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Core Configuration")
FName CharacterName = TEXT("DefaultCharacter");
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Core Configuration")
FText CharacterDescription;
// Movement configuration
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float WalkSpeed = 165.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float RunSpeed = 375.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float SprintSpeed = 600.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float CrouchSpeed = 150.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float JumpZVelocity = 420.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Movement")
float AirControl = 0.4f;
// System references
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "System Configuration")
TObjectPtr<UGASPAC_CameraProfileDataAsset> DefaultCameraProfile;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "System Configuration")
TObjectPtr<UGASPAC_BodyConfigDataAsset> BodyConfig;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "System Configuration")
TObjectPtr<UGASPAC_RagdollConfigDataAsset> RagdollConfig;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "System Configuration")
TObjectPtr<UGASPAC_SoundProfileDataAsset> SoundProfile;
Location: Source/OmniShift/Public/DataAssets/GASPAC_RigConfigDataAsset.h
Description: Rig configuration data asset for bone hierarchy, IK chains, and constraints.
// Character type
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Rig Configuration")
EGASPAC_CharacterType CharacterType = EGASPAC_CharacterType::Humanoid;
// Rig hierarchy
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Rig Configuration")
TArray<FGASPAC_RigHierarchy> RigHierarchy;
// IK chains
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Rig Configuration")
TArray<FGASPAC_IKChain> IKChains;
// Bone constraints
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Rig Configuration")
TMap<FName, FGASPAC_BoneConstraints> BoneConstraints;
// Performance settings
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Performance")
float RigUpdateFrequency = 60.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Performance")
bool bEnableDistanceLOD = true;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Performance")
float MaxUpdateDistance = 5000.0f;
// Debug settings
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Debug")
bool bEnableDebugDraw = false;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Debug")
FColor DebugDrawColor = FColor::Green;
Location: Source/OmniShift/Public/DataAssets/GASPAC_CameraProfileDataAsset.h
Description: Camera profile data asset containing camera mode configurations and settings.
// Default camera settings
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera Configuration")
EGASPAC_CameraMode DefaultMode = EGASPAC_CameraMode::ThirdPerson_OverShoulder;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera Configuration")
float DefaultFOV = 90.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera Configuration")
float TransitionSpeed = 2.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera Configuration")
EGASPAC_EasingFunction DefaultEasing = EGASPAC_EasingFunction::EaseInOut;
// Camera mode settings
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera Configuration")
TMap<EGASPAC_CameraMode, FGASPAC_CameraSettings> CameraModeSettings;
// Advanced settings
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced Configuration")
bool bAllowRuntimeModeSwitching = true;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced Configuration")
bool bEnableFreeLook = true;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced Configuration")
bool bAllowShoulderSwap = true;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Advanced Configuration")
bool bEnableCameraZoom = true;
| Data Asset | Description | Key Features |
|---|---|---|
| GASPAC_LocomotionProfileDataAsset | Animation state configuration | 16 locomotion states, blending modes |
| GASPAC_BodyConfigDataAsset | Body processing settings | IK system toggles, visibility |
| GASPAC_RagdollConfigDataAsset | Physics and ragdoll settings | Recovery conditions, impulse response |
| GASPAC_InputProfileDataAsset | Input system configuration | EnhancedInput mapping, buffering |
| GASPAC_AbilitySetDataAsset | Gameplay abilities | Granted abilities, startup effects |
| GASPAC_SoundProfileDataAsset | Audio configuration | Footstep sounds, interaction audio |
// Camera modes
UENUM(BlueprintType)
enum class EGASPAC_CameraMode : uint8
{
FirstPerson_Immersive UMETA(DisplayName = "First Person Immersive"),
ThirdPerson_OverShoulder UMETA(DisplayName = "Third Person Over Shoulder"),
ThirdPerson_Follow UMETA(DisplayName = "Third Person Follow"),
SideScroller UMETA(DisplayName = "Side Scroller"),
TwoPointFiveD UMETA(DisplayName = "2.5D"),
Isometric UMETA(DisplayName = "Isometric"),
TopDown UMETA(DisplayName = "Top Down"),
FreeCam UMETA(DisplayName = "Free Camera")
};
// Character types
UENUM(BlueprintType)
enum class EGASPAC_CharacterType : uint8
{
Humanoid UMETA(DisplayName = "Humanoid"),
Quadruped UMETA(DisplayName = "Quadruped"),
Robot UMETA(DisplayName = "Robot"),
Aquatic UMETA(DisplayName = "Aquatic"),
Flying UMETA(DisplayName = "Flying")
};
// Locomotion states
UENUM(BlueprintType)
enum class EGASPAC_LocomotionState : uint8
{
Idle UMETA(DisplayName = "Idle"),
Walking UMETA(DisplayName = "Walking"),
Running UMETA(DisplayName = "Running"),
Sprinting UMETA(DisplayName = "Sprinting"),
Crouching UMETA(DisplayName = "Crouching"),
Crawling UMETA(DisplayName = "Crawling"),
Jumping UMETA(DisplayName = "Jumping"),
Falling UMETA(DisplayName = "Falling"),
Swimming UMETA(DisplayName = "Swimming"),
Flying UMETA(DisplayName = "Flying"),
Climbing UMETA(DisplayName = "Climbing"),
Sliding UMETA(DisplayName = "Sliding"),
Vaulting UMETA(DisplayName = "Vaulting"),
Cover UMETA(DisplayName = "Cover"),
Prone UMETA(DisplayName = "Prone"),
Custom UMETA(DisplayName = "Custom")
};
// IK types
UENUM(BlueprintType)
enum class EGASPAC_IKType : uint8
{
HeadIK UMETA(DisplayName = "Head IK"),
FootIK UMETA(DisplayName = "Foot IK"),
HandIK UMETA(DisplayName = "Hand IK"),
SpineIK UMETA(DisplayName = "Spine IK")
};
// Quality levels
UENUM(BlueprintType)
enum class EGASPAC_QualityLevel : uint8
{
Low UMETA(DisplayName = "Low"),
Medium UMETA(DisplayName = "Medium"),
High UMETA(DisplayName = "High"),
Ultra UMETA(DisplayName = "Ultra")
};
// Character state
USTRUCT(BlueprintType)
struct FGASPAC_CharacterState
{
UPROPERTY(BlueprintReadOnly)
bool bIsRagdoll = false;
UPROPERTY(BlueprintReadOnly)
bool bIsFreeLooking = false;
UPROPERTY(BlueprintReadOnly)
bool bIsHandActive = false;
UPROPERTY(BlueprintReadOnly)
EGASPAC_CameraMode CurrentCameraMode = EGASPAC_CameraMode::ThirdPerson_OverShoulder;
UPROPERTY(BlueprintReadOnly)
float FreeLookYaw = 0.0f;
UPROPERTY(BlueprintReadOnly)
float FreeLookPitch = 0.0f;
UPROPERTY(BlueprintReadOnly)
bool bIsMoving = false;
UPROPERTY(BlueprintReadOnly)
float CurrentSpeed = 0.0f;
UPROPERTY(BlueprintReadOnly)
FVector CurrentVelocity = FVector::ZeroVector;
UPROPERTY(BlueprintReadOnly)
FRotator CurrentRotation = FRotator::ZeroRotator;
};
// IK chain configuration
USTRUCT(BlueprintType)
struct FGASPAC_IKChain
{
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FName ChainName = NAME_None;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<FName> BoneNames;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
FName EndEffectorBone = NAME_None;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 MaxIterations = 10;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float Precision = 0.1f;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float ChainLength = 0.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
bool bEnableDebugDraw = false;
};
Location: Source/OmniShift/Public/Utilities/GASPAC_FunctionLibrary.h
Description: Blueprint function library providing utility functions for OmniShift systems.
// Character utilities
UFUNCTION(BlueprintPure, Category = "OmniShift|Character", meta = (WorldContext = "WorldContextObject"))
static AGASPAC_CharacterBase* GetOmniShiftCharacter(UObject* WorldContextObject);
UFUNCTION(BlueprintPure, Category = "OmniShift|Character")
static bool IsOmniShiftCharacter(AActor* Actor);
// Camera utilities
UFUNCTION(BlueprintCallable, Category = "OmniShift|Camera")
static void SetCameraMode(AActor* Character, EGASPAC_CameraMode CameraMode, float TransitionDuration = 1.0f);
UFUNCTION(BlueprintCallable, Category = "OmniShift|Camera")
static void SwitchToFirstPerson(AActor* Character);
UFUNCTION(BlueprintCallable, Category = "OmniShift|Camera")
static void SwitchToThirdPerson(AActor* Character);
// Interaction utilities
UFUNCTION(BlueprintCallable, Category = "OmniShift|Interaction")
static bool StartInteraction(AActor* Character, AActor* Target);
UFUNCTION(BlueprintCallable, Category = "OmniShift|Interaction")
static void StopInteraction(AActor* Character);
UFUNCTION(BlueprintPure, Category = "OmniShift|Interaction")
static bool CanInteractWith(AActor* Character, AActor* Target);
// Animation utilities
UFUNCTION(BlueprintCallable, Category = "OmniShift|Animation")
static void SetLocomotionState(AActor* Character, EGASPAC_LocomotionState State);
UFUNCTION(BlueprintPure, Category = "OmniShift|Animation")
static EGASPAC_LocomotionState GetLocomotionState(AActor* Character);
// Rig utilities
UFUNCTION(BlueprintCallable, Category = "OmniShift|Rig")
static void SetBoneTransform(AActor* Character, FName BoneName, FTransform Transform);
UFUNCTION(BlueprintCallable, Category = "OmniShift|Rig")
static void ApplyIKChain(AActor* Character, const FGASPAC_IKChain& IKChain, FVector TargetPosition);
// Performance utilities
UFUNCTION(BlueprintCallable, Category = "OmniShift|Performance")
static void OptimizeForPerformance(AActor* Character);
UFUNCTION(BlueprintCallable, Category = "OmniShift|Performance")
static void OptimizeForQuality(AActor* Character);
UFUNCTION(BlueprintCallable, Category = "OmniShift|Performance")
static void EnableDebugMode(AActor* Character, bool bEnabled);
Location: Source/OmniShift/Public/Interfaces/GASPAC_InteractionInterface.h
Description: Interface for objects that can be interacted with using the OmniShift interaction system.
UINTERFACE(BlueprintType)
class UGASPAC_InteractionInterface
{
GENERATED_BODY()
};
class OMNISHIFT_API IGASPAC_InteractionInterface
{
public:
// Check if character can interact with this object
UFUNCTION(BlueprintNative, BlueprintCallable, Category = "Interaction")
virtual bool CanInteract(AGASPAC_CharacterBase* Character) const = 0;
// Get interaction type
UFUNCTION(BlueprintNative, BlueprintCallable, Category = "Interaction")
virtual EGASPAC_InteractionType GetInteractionType() const = 0;
// Handle interaction
UFUNCTION(BlueprintNative, BlueprintCallable, Category = "Interaction")
virtual void OnInteract(AGASPAC_CharacterBase* Character, EGASPAC_InteractionType InteractionType) = 0;
// Get interaction point
UFUNCTION(BlueprintNative, BlueprintCallable, Category = "Interaction")
virtual FVector GetInteractionPoint(AGASPAC_CharacterBase* Character) const = 0;
// Get interaction range
UFUNCTION(BlueprintNative, BlueprintCallable, Category = "Interaction")
virtual float GetInteractionRange() const { return 200.0f; }
// Get interaction cooldown
UFUNCTION(BlueprintNative, BlueprintCallable, Category = "Interaction")
virtual float GetInteractionCooldown() const { return 0.0f; }
};
Location: Source/OmniShift/Public/Interfaces/GASPAC_CameraInterface.h
Description: Interface for objects that require custom camera behavior.
UINTERFACE(BlueprintType)
class UGASPAC_CameraInterface
{
GENERATED_BODY()
};
class OMNISHIFT_API IGASPAC_CameraInterface
{
public:
// Get preferred camera mode
UFUNCTION(BlueprintNative, BlueprintCallable, Category = "Camera")
virtual EGASPAC_CameraMode GetPreferredCameraMode() const = 0;
// Get camera offset
UFUNCTION(BlueprintNative, BlueprintCallable, Category = "Camera")
virtual FVector GetCameraOffset() const { return FVector::ZeroVector; }
// Get camera rotation offset
UFUNCTION(BlueprintNative, BlueprintCallable, Category = "Camera")
virtual FRotator GetCameraRotationOffset() const { return FRotator::ZeroRotator; }
// Handle camera update
UFUNCTION(BlueprintNative, BlueprintCallable, Category = "Camera")
virtual void OnCameraUpdate(float DeltaTime) {}
// Is camera controlled
UFUNCTION(BlueprintNative, BlueprintCallable, Category = "Camera")
virtual bool IsCameraControlled() const { return true; }
};
// Character state events
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnCharacterStateDelegate, EGASPAC_CharacterState, NewState);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnCharacterHealthDelegate, float, CurrentHealth, float, PreviousHealth);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnCharacterStaminaDelegate, float, CurrentStamina, float, PreviousStamina);
// Camera events
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnCameraModeChangedDelegate, EGASPAC_CameraMode, NewMode);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnCameraTransitionDelegate, EGASPAC_CameraMode, FromMode, EGASPAC_CameraMode, ToMode);
// Interaction events
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOnInteractionStartedDelegate, AActor*, InteractedObject, FVector, InteractionPoint, UPrimitiveComponent*, Component);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnInteractionEndedDelegate, AActor*, InteractedObject, bool, bWasSuccessful);
// Animation events
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnLocomotionStateChangedDelegate, EGASPAC_LocomotionState, FromState, EGASPAC_LocomotionState, ToState);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnAnimationTransitionStartedDelegate, EGASPAC_LocomotionState, TargetState, float, Duration);
// Performance targets
namespace GASPACConstants
{
constexpr float DEFAULT_UPDATE_FREQUENCY = 60.0f;
constexpr float DEFAULT_INTERPOLATION_SPEED = 5.0f;
constexpr int32 DEFAULT_MAX_IK_ITERATIONS = 10;
constexpr float DEFAULT_IK_PRECISION = 0.1f;
constexpr float DEFAULT_CHARACTER_RADIUS = 34.0f;
constexpr float DEFAULT_CHARACTER_HEIGHT = 88.0f;
}
// Performance metrics
namespace GASPACPerformance
{
constexpr float MAX_FRAME_TIME_BUDGET_MS = 2.0f;
constexpr float MAX_MEMORY_BUDGET_MB = 50.0f;
constexpr float MAX_NETWORK_BANDWIDTH_KB = 10.0f;
}
// Quality levels
namespace GASPACQuality
{
constexpr float LOW_UPDATE_FREQUENCY = 30.0f;
constexpr float MEDIUM_UPDATE_FREQUENCY = 60.0f;
constexpr float HIGH_UPDATE_FREQUENCY = 120.0f;
constexpr float ULTRA_UPDATE_FREQUENCY = 144.0f;
}
For complete API mastery:
Need help with specific API functionality? Check the troubleshooting guide or ask for targeted API examples.