* Config.AimingStanceContainer <--- UConfigObj_AimingStanceContainer extends UConfigObj_Parent * Config.AimingStance <--- UConfigObj_AimingStance extends UConfigObj * TurnRate * LookAtYaw * FAimingStanceRequirements * AimingStance Tag * RequirementTagList * Potential other logic if necessary beyond just tags * Config.AimingStanceContainer * Config.AimingStance.Default * TurnRate = 90 * LookAtYaw = 5 * Config.AimingStance.Falling * Config.AimingStance.Cover * Config.AimingStance.ADS * Config.AimingStance.ADS.Cover * AimingStanceRequirements * Entry * AimingStanceConfigTag = Config.AimingStance.ADS.Cover * Requires = Character.Status.ADS, Character.Status.Cover * Ignores = Character.Status.Downed * Entry * AimingStanceConfigTag = Config.AimingStance.ADS * Requires = Character.Status.ADS * Ignores = Character.Status.Downed ``` struct FAimingStanceRequirements { UPROPERTY(EditDefaultsOnly, Category=Config, meta=(Categories="Config.AimingStance", RequiredConfig)) FGameplayTag AimingStanceTag; UPROPERTY(EditDefaultsOnly, Category=Config) FGameplayTagRequirements StanceTagRequirements; } class UConfigObj_AimingStanceContainer : public UConfigObj_Parent { public: static FGameplayTag DefaultAimingStanceTag; UConfigObj_AimingStanceContainer() { REGISTER_CONFIG_OBJ(...) REGISTER_REQUIRED_CONFIG_TAG(DefaultAimingStanceTag, UConfigObj_AimingStanceContainer::StaticClass(), "Config.AimingStance.Default") } UConfigObj_AimingStance* GetBestAimingStance(AAPCharacter* Character) const { IterateThroughAimingStanceRequirements FGameplayTag AimingConfigTagToUse = first matching if found return GetConfigObj<UConfigObj_AimingStance>(AimingConfigTagToUse) else return GetConfigObj<UConfigObj_AimingStance>(DefaultAimingStanceTag) } private: UPROPERTY(EditDefaultsOnly, Category=Config, meta=(RequiredConfig)) //Might or might not be necessary to put RequiredConfigHere FAimingStanceRequirements AimingStanceRequirements; } ``` // Leaving tags * Stance.ADS * LeavingTags: * Gun.Special -> * Stance.HipFiring.Special * Gun.Special * Stance.HipFiring * Stance.HumanShield.ADS * Character.Status.HumanShield * Character.Status.ADS * LeavingTags * Character.AnimStance.Aiming.Lingering -> 2 seconds * Stance.HumanShield.Hipfire * Character.Status.HumanShield * AND * (Character.Status.Aiming OR Character.AnimStance.Aiming.Lingering) * Stance.HumanShield * Character.Status.HumanShield * Stance.ADS * Character.Status.ADS * LeavingTags * Character.AnimStance.Aiming.Lingering -> 2 seconds * Stance.Hipfire.RocketLauncher * Gun.RocketLauncher * (Character.Status.Aiming OR Character.AnimStance.Aiming.Lingering) * Stance.Hipfire * (Character.Status.Aiming OR Character.AnimStance.Aiming.Lingering) Requirements by a FGameplayTagQuery UCPGAbilitySystemComponent->ApplyLooseTagWithDuration but maybe I should create my own AddLooseGameplayTag or RemoveLooseGameplayTag SubConfigObject for LeavingTags on each specific Stance
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up