UKawaiiPhysicsLibrary
Blueprint Function LibraryのAPIリファレンスです。
クラス定義
UCLASS()
class KAWAIIPHYSICS_API UKawaiiPhysicsLibrary : public UBlueprintFunctionLibrary
ノード参照の取得
ConvertToKawaiiPhysics
AnimNodeからKawaiiPhysics参照を取得します。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics",
meta = (BlueprintThreadSafe, ExpandEnumAsExecs = "Result"))
static FKawaiiPhysicsReference ConvertToKawaiiPhysics(
const FAnimNodeReference& Node,
EAnimNodeReferenceConversionResult& Result
);
ConvertToKawaiiPhysicsPure
AnimNodeからKawaiiPhysics参照を取得(Pure版)。
UFUNCTION(BlueprintPure, Category = "Kawaii Physics",
meta = (BlueprintThreadSafe, DisplayName = "Convert to Kawaii Physics (Pure)"))
static void ConvertToKawaiiPhysicsPure(
const FAnimNodeReference& Node,
FKawaiiPhysicsReference& KawaiiPhysics,
bool& Result
);
物理リセット
ResetDynamics
KawaiiPhysicsノードの物理状態をリセットします。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference ResetDynamics(const FKawaiiPhysicsReference& KawaiiPhysics);
使用例:
- テレポート後のリセット
- アニメーション切り替え時
- シーン遷移時
ボーン設定
SetRootBoneName / GetRootBoneName
ルートボーン名の設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetRootBoneName(
const FKawaiiPhysicsReference& KawaiiPhysics,
UPARAM(ref) FName& RootBoneName
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FName GetRootBoneName(const FKawaiiPhysicsReference& KawaiiPhysics);
SetExcludeBoneNames / GetExcludeBoneNames
除外ボーン名の設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetExcludeBoneNames(
const FKawaiiPhysicsReference& KawaiiPhysics,
UPARAM(ref) TArray<FName>& ExcludeBoneNames
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static TArray<FName> GetExcludeBoneNames(const FKawaiiPhysicsReference& KawaiiPhysics);
Physics Settings
SetPhysicsSettings / GetPhysicsSettings
物理設定の設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetPhysicsSettings(
const FKawaiiPhysicsReference& KawaiiPhysics,
UPARAM(ref) FKawaiiPhysicsSettings& PhysicsSettings
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsSettings GetPhysicsSettings(const FKawaiiPhysicsReference& KawaiiPhysics);
SetDummyBoneLength / GetDummyBoneLength
ダミーボーン長の設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetDummyBoneLength(
const FKawaiiPhysicsReference& KawaiiPhysics,
float DummyBoneLength
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static float GetDummyBoneLength(const FKawaiiPhysicsReference& KawaiiPhysics);
テレポートしきい値
SetTeleportDistanceThreshold / GetTeleportDistanceThreshold
テレポート距離しきい値の設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetTeleportDistanceThreshold(
const FKawaiiPhysicsReference& KawaiiPhysics,
float TeleportDistanceThreshold
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static float GetTeleportDistanceThreshold(const FKawaiiPhysicsReference& KawaiiPhysics);
SetTeleportRotationThreshold / GetTeleportRotationThreshold
テレポート回転しきい値の設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetTeleportRotationThreshold(
const FKawaiiPhysicsReference& KawaiiPhysics,
float TeleportRotationThreshold
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static float GetTeleportRotationThreshold(const FKawaiiPhysicsReference& KawaiiPhysics);
外部力
SetGravity / GetGravity
重力ベクトルの設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetGravity(
const FKawaiiPhysicsReference& KawaiiPhysics,
FVector Gravity
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FVector GetGravity(const FKawaiiPhysicsReference& KawaiiPhysics);
SetEnableWind / GetEnableWind
風の有効化設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetEnableWind(
const FKawaiiPhysicsReference& KawaiiPhysics,
bool bEnableWind
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static bool GetEnableWind(const FKawaiiPhysicsReference& KawaiiPhysics);
SetWindScale / GetWindScale
風のスケールの設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetWindScale(
const FKawaiiPhysicsReference& KawaiiPhysics,
float WindScale
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static float GetWindScale(const FKawaiiPhysicsReference& KawaiiPhysics);
コリジョン
SetAllowWorldCollision / GetAllowWorldCollision
ワールドコリジョンの有効化設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetAllowWorldCollision(
const FKawaiiPhysicsReference& KawaiiPhysics,
bool bAllowWorldCollision
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static bool GetAllowWorldCollision(const FKawaiiPhysicsReference& KawaiiPhysics);
SetLimitsDataAsset / GetLimitsDataAsset
コリジョンData Assetの設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetLimitsDataAsset(
const FKawaiiPhysicsReference& KawaiiPhysics,
UKawaiiPhysicsLimitsDataAsset* LimitsDataAsset
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static UKawaiiPhysicsLimitsDataAsset* GetLimitsDataAsset(const FKawaiiPhysicsReference& KawaiiPhysics);
ウォームアップ
SetNeedWarmUp / GetNeedWarmUp
ウォームアップの有効化設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static FKawaiiPhysicsReference SetNeedWarmUp(
const FKawaiiPhysicsReference& KawaiiPhysics,
bool bNeedWarmUp
);
UFUNCTION(BlueprintPure, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static bool GetNeedWarmUp(const FKawaiiPhysicsReference& KawaiiPhysics);
External Force API
AddExternalForce
外力を追加します。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static bool AddExternalForce(
const FKawaiiPhysicsReference& KawaiiPhysics,
FInstancedStruct& ExternalForce,
UObject* Owner,
bool bIsOneShot = false
);
AddExternalForceWithExecResult
外力を追加(実行結果付き)。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics",
meta=(BlueprintThreadSafe, ExpandEnumAsExecs = "ExecResult"))
static FKawaiiPhysicsReference AddExternalForceWithExecResult(
EKawaiiPhysicsAccessExternalForceResult& ExecResult,
const FKawaiiPhysicsReference& KawaiiPhysics,
FInstancedStruct& ExternalForce,
UObject* Owner
);
AddExternalForcesToComponent
SkeletalMeshComponentに外力を追加します。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static bool AddExternalForcesToComponent(
USkeletalMeshComponent* MeshComp,
UPARAM(ref) TArray<FInstancedStruct>& ExternalForces,
UObject* Owner,
UPARAM(ref) FGameplayTagContainer& FilterTags,
bool bFilterExactMatch = false,
bool bIsOneShot = false
);
RemoveExternalForcesFromComponent
SkeletalMeshComponentから外力を削除します。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static bool RemoveExternalForcesFromComponent(
USkeletalMeshComponent* MeshComp,
UObject* Owner,
UPARAM(ref) FGameplayTagContainer& FilterTags,
bool bFilterExactMatch = false
);
Alpha制御
SetAlphaToComponent
コンポーネント内のすべてのKawaiiPhysicsノードにAlpha値を設定します。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static bool SetAlphaToComponent(
USkeletalMeshComponent* MeshComp,
float Alpha,
UPARAM(ref) FGameplayTagContainer& FilterTags,
bool bFilterExactMatch = false
);
GetAlphaFromComponent
コンポーネント内の最初にマッチしたKawaiiPhysicsノードからAlpha値を取得します。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics", meta=(BlueprintThreadSafe))
static bool GetAlphaFromComponent(
USkeletalMeshComponent* MeshComp,
float& OutAlpha,
UPARAM(ref) FGameplayTagContainer& FilterTags,
bool bFilterExactMatch = false
);
External Force プロパティアクセス
SetExternalForceBoolProperty / GetExternalForceBoolProperty
外力のboolプロパティ設定/取得。
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics",
meta=(BlueprintThreadSafe, ExpandEnumAsExecs = "ExecResult"))
static FKawaiiPhysicsReference SetExternalForceBoolProperty(
EKawaiiPhysicsAccessExternalForceResult& ExecResult,
const FKawaiiPhysicsReference& KawaiiPhysics,
int ExternalForceIndex,
FName PropertyName,
bool Value
);
UFUNCTION(BlueprintCallable, Category = "Kawaii Physics",
meta=(BlueprintThreadSafe, ExpandEnumAsExecs = "ExecResult"))
static bool GetExternalForceBoolProperty(
EKawaiiPhysicsAccessExternalForceResult& ExecResult,
const FKawaiiPhysicsReference& KawaiiPhysics,
int ExternalForceIndex,
FName PropertyName
);
他の型のプロパティアクセス
同様のパターンで以下の型もサポートしています:
int32: SetExternalForceIntProperty / GetExternalForceIntPropertyfloat: SetExternalForceFloatProperty / GetExternalForceFloatPropertyFVector: SetExternalForceVectorProperty / GetExternalForceVectorPropertyFRotator: SetExternalForceRotatorProperty / GetExternalForceRotatorPropertyFTransform: SetExternalForceTransformProperty / GetExternalForceTransformProperty- Wildcard: SetExternalForceWildcardProperty / GetExternalForceWildcardProperty
Blueprint使用例
テレポート後のリセット
Event: On Teleport
→ Get Anim Instance from Mesh
→ Get Linked Anim Graph Instance by Tag
→ Get Anim Node By Tag
→ Convert to Kawaii Physics
→ Call ResetDynamics
外力の適用
Event: On Impact
→ Create External Force (Instanced Struct)
→ Add External Forces to Component
→ Mesh Comp: Self
→ Owner: Self
→ Filter Tags: "KawaiiPhysics.Hair"
C++使用例
#include "KawaiiPhysicsLibrary.h"
void AMyCharacter::OnTeleport()
{
UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance();
// ノード参照を取得してリセット
FAnimNodeReference NodeRef = AnimInstance->GetLinkedAnimGraphInstanceByTag("HairPhysics");
EAnimNodeReferenceConversionResult Result;
FKawaiiPhysicsReference KPRef = UKawaiiPhysicsLibrary::ConvertToKawaiiPhysics(NodeRef, Result);
if (Result == EAnimNodeReferenceConversionResult::Succeeded)
{
UKawaiiPhysicsLibrary::ResetDynamics(KPRef);
}
}
void AMyCharacter::ApplyImpact(FVector Direction, float Force)
{
// 外力を追加
FGameplayTagContainer FilterTags;
FilterTags.AddTag(FGameplayTag::RequestGameplayTag("KawaiiPhysics.Hair"));
TArray<FInstancedStruct> ExternalForces;
// 外力を設定...
UKawaiiPhysicsLibrary::AddExternalForcesToComponent(
GetMesh(),
ExternalForces,
this,
FilterTags
);
}