Zdexby TheHolyOneZ
2,759 classes
Class

AAtlasJanitorAI

: AAtlasAICharacter : AAtlasAI : ACharacter : APawn : AActor : UObject
/Script/Atlas.AtlasJanitorAI 0x0BA0 (2,976 B) align 16 inherited 0x0A70 vtable /Script/Atlas
0x00x0BA0

Members 20

OffsetSizeNameTypeFlagsDefault
0x20OnTopJanitorDataFAtlasJanitorOnTopData6 flags{EntryBlendTime=3, ChangeLedgeTime=3, LeaveBlendOut=0.3, Ch…
0x18GrabDataFAtlasJanitorGrabData6 flags{LeaveBlendOut=0.2, TimeToGrab=0.8, PlayerPelvisBone=skinne…
0x08LeftHandCollisionUSphereComponent*11 flags/Script/Atlas.Default__AtlasJanitorAI.LeftHandCollision
0x08RightHandCollisionUSphereComponent*11 flags/Script/Atlas.Default__AtlasJanitorAI.RightHandCollision
0x08TransferAnimationUAnimSequence*9 flagsnullptr
0x08TouchGrabBaseAnimationUAnimSequence*7 flagsnullptr
0x01bGrabImmediatelyOnTouchbool8 flagsfalse
0x0AC10x03padding / unreflected
0x04CloseToPlayerDistancefloat9 flags500
0x04InvestigateReactionThresholdfloat9 flags1.2
0x04StrongReactionThresholdfloat9 flags2
0x04ReactionCooldownOnSoundfloat9 flags0.5
0x04PursuingHearingModifierfloat9 flags1.4
0x08SixthSenseCapsuleUCapsuleComponent*11 flags/Script/Atlas.Default__AtlasJanitorAI.SixthSenseBox
0x08PursuitSixthSenseCapsuleUCapsuleComponent*11 flags/Script/Atlas.Default__AtlasJanitorAI.PursuitSixthSenseBox
0x04ExtraSixthSenseActivationHeightfloat9 flags50
0x0AEC0x04padding / unreflected
0x40TouchDataFAtlasJanitorTouchData6 flags{DistanceRange={Min=200, Max=700}, AngleRange={Min=10, Max=…
0x04MaterialDetectionRangefloat9 flags100
0x08LeftMaterialDetectionBoneFName9 flagsl_middleFinger2_bn
0x08RightMaterialDetectionBoneFName9 flagsr_middleFinger2_bn
0x30ClippingDataFAtlasJanitorClippingData6 flags{LeftHandBlend=0, RightHandBlend=0, LeftHandName=l_middleFi…
0x0B740x2Cunreflected bytes to end of AAtlasJanitorAI
Inherited from AAtlasAICharacter 70
OffsetSizeNameTypeFlagsDefault
0x01bIgnorePlayerbool8 flagsfalse
0x04F50x03padding / unreflected
0x04DirectionToPlayerfloat7 flags0
0x04DistanceToPlayerfloat7 flags0
0x04ExtraDetectionTimefloat7 flags2
0x04TimeAfterPlayerThrownStillReactsfloat7 flags5
0x1CPlayerIgnoreDataFIgnorePlayerPositionData6 flags{Time=15, Distance=200}
0x05240x04padding / unreflected
0x10AttachBoneNamesTArray<FAttachBoneData>6 flags[]
0x08AnimationListenerComponentUTarAnimationListenerComponent*11 flags/Script/Atlas.Default__AtlasAICharacter.AnimationListener
0x04DefaultTeleportSpeedfloat7 flags100
0x04DefaultTeleportRotationSpeedfloat7 flags50
0x04TimeItTakesToTurnfloat9 flags1
0x04ObstacleSearchRadiusfloat9 flags1000
0x04AvoidancePredictionDistancefloat9 flags500
0x04AvoidanceWeightfloat9 flags0.95
0x28GrabParametersFGrabParameters6 flags{GrabRange=420, MaxGrabHeight=360, GrabAttachLerpTime=0.2, …
0x01bRelaxGrabRequirementsbool7 flagsfalse
0x05810x03padding / unreflected
0x0COverridePursuitLocationFVector7 flags{X=0, Y=0, Z=0}
0x3CSearchBehaviorParametersFAISearchBehaviorParameters6 flags{MinSearchRadius=1000, MaxSearchRadius=2000, MinPlayerAware…
0x3CHostileSearchBehaviorParametersFAISearchBehaviorParameters6 flags{MinSearchRadius=1000, MaxSearchRadius=2000, MinPlayerAware…
0x04HostileSearchRangefloat9 flags1000
0x060C0x04padding / unreflected
0x28PursuitBehaviorParametersFAIPursuitBehaviorParameters6 flags{TimeToTire=15, MaxPredictionAngle=120, TurnWeightCoefficen…
0x04AlertReactionTimefloat8 flags2
0x04LastAlertReactionTimefloat8 flags2
0x14AlertedStateDataFAIAlertedData6 flags{AntiBounceDistance=300, AntiBounceStrength=0.8, MinimumTim…
0x04AntiBounceLedgeLengthfloat9 flags50
0x28OnTopDataFAIOnSurfaceData6 flags{AnimationStartDistance=275, DistanceFromLedge=200, TimeToT…
0x04TimeSearchingUnderTablefloat9 flags10
0x04ExtraTimeInBelowSurfacefloat9 flags1.5
0x04TimeBeforeAllowedToEnterAlertedAgainfloat9 flags2
0x01CurrentDoorStateEDoorState7 flagsDone
0x068D0x07padding / unreflected
0x01CurrentDoorInteractionEDoorInteractionType7 flagsNone
0x06950x03padding / unreflected
0x10DoorInteractionParametersTArray<FDoorInteractionParameters>4 flags[]
0x04DoorPositionAccuracyfloat7 flags40
0x04DoorAngleAccuracyfloat7 flags20
0x04DistanceToSearchForDoorsfloat7 flags700
0x06B40x04padding / unreflected
0x08InvestigateAnimationUAnimSequence*7 flagsnullptr
0x24HearingParametersFHearingParameters5 flags{HearingSensitivity=1, ListenSensitivityModifier=1.1, Liste…
0x04HearingSensitivityModifierfloat7 flags1
0x18SoundDataFSoundData4 flags{PathDistanceToSix=3.4028235e+38, PathDistanceFromGoalToSix…
0x04PathfindingWeightfloat9 flags1
0x07040x04padding / unreflected
0x08StartingQuestAAtlasAIQuest*7 flagsnullptr
0x04SmoothTeleportAccuracyfloat7 flags0.01
0x07140x04padding / unreflected
0x10KillAnimationsTArray<FKillAnimationData>4 flags[]
0x04DistanceToIgnoreDeathQuestsfloat7 flags1000
0x04FallbackDeathTimefloat7 flags10
0x04FallbackDeathTimeWithQuestfloat7 flags30
0x04HorizontalDetectionDistancefloat9 flags40
0x04VerticalDetectionDistancefloat9 flags20
0x34VisionParametersFVisionParameters4 flags{VisionSocketName=Socket_VisionCone, SightDistance=1000, Pe…
0x0CRotationToPointOfInterestFRotator6 flags{Pitch=0, Yaw=0, Roll=0}
0x0CPointOfInterestFVector7 flags{X=0, Y=0, Z=0}
0x01bPlayerIsInLineOfSightbool7 flagsfalse
0x01bUseDynamicAlertedTimerbool8 flagsfalse
0x078A0x06padding / unreflected
0x10OnHasReachedEventFMulticastScriptDelegate4 flags<delegate>
0x07A00x164padding / unreflected
0x08QuestTagFNameProtected+7 flagsNone
0x090C0x04padding / unreflected
0x08BikRetargetingComponentUBikRetargetingComponent*Protected+11 flags/Script/Atlas.Default__AtlasAICharacter.IKRetargeting
0x08HostileDataFAIHostileDataProtected+6 flags{HostileTime=15}
0x08AIControllerAAIController*TransientProtected+5 flagsnullptr
0x08PlayerAAtlasPlayer*TransientProtected+5 flagsnullptr
0x08SearchBehaviorUAtlasAISearchBehavior*Protected+5 flagsnullptr
0x08PursuitBehaviorUAtlasAIPursuitBehavior*Protected+5 flagsnullptr
0x08InvestigateBehaviorUAtlasAIInvestigateBehavior*Protected+5 flagsnullptr
0x08BeyondReachBehaviorUAtlasAIBeyondReachBehavior*Protected+5 flagsnullptr
0x08HostileSearchBehaviorUAtlasAIHostileSearchBehavior*Protected+5 flagsnullptr
0x08PerceptionComponentUAIPerceptionComponent*Protected+7 flags/Script/Atlas.Default__AtlasAICharacter.Perception
0x08HandsPhysicsHandleUPhysicsHandleComponent*Protected+7 flags/Script/Atlas.Default__AtlasAICharacter.HandsPhysicsHandle
0x08GrabbedActorAActor*TransientProtected+5 flagsnullptr
0x08grabbedComponentUSceneComponent*TransientProtected+7 flagsnullptr
0x10QuestStackTArray<AAtlasAIQuest*>TransientProtected+2 flags[]
0x08AnimationInstanceUAtlasAIAnimInstance*TransientProtected+5 flagsnullptr
Inherited from ACharacter 38
OffsetSizeNameTypeFlagsDefault
0x08MeshUSkeletalMeshComponent*11 flags/Script/Engine.Default__Character.CharacterMesh0
0x08CharacterMovementUCharacterMovementComponent*11 flags/Script/Engine.Default__Character.CharMoveComp
0x08CapsuleComponentUCapsuleComponent*11 flags/Script/Engine.Default__Character.CollisionCylinder
0x30BasedMovementFBasedMovementInfoProtected+3 flags{MovementBase=nullptr, BoneName=None, Location={}, Rotation…
0x30ReplicatedBasedMovementFBasedMovementInfoNetRepNotify+4 flags{MovementBase=nullptr, BoneName=None, Location={}, Rotation…
0x04AnimRootMotionTranslationScalefloatNetProtected+5 flags1
0x0CBaseTranslationOffsetFVectorProtected+5 flags{X=0, Y=0, Z=0}
0x03380x08padding / unreflected
0x10BaseRotationOffsetFQuatProtected+3 flags{X=0, Y=0, Z=0, W=1}
0x04ReplicatedServerLastTransformUpdateTimeStampfloatNetProtected+5 flags0
0x04ReplayLastTransformUpdateTimeStampfloatNetRepNotify+6 flags0
0x01ReplicatedMovementModeuint8NetProtected+5 flags0
0x01bInBaseReplicationboolProtected+5 flagsfalse
0x035A0x02padding / unreflected
0x04CrouchedEyeHeightfloat7 flags32
0x01bIsCrouched : 1bit 0boolNetRepNotify+5 flagsfalse
0x01bProxyIsJumpForceApplied : 1bit 1boolNetTransient+3 flagsfalse
0x01bPressedJump : 1bit 2bool5 flagsfalse
0x01bClientUpdating : 1bit 3boolTransient+3 flagsfalse
0x01bClientWasFalling : 1bit 4boolTransient+3 flagsfalse
0x01bClientResimulateRootMotion : 1bit 5boolTransient+3 flagsfalse
0x01bClientResimulateRootMotionSources : 1bit 6boolTransient+3 flagsfalse
0x01bSimGravityDisabled : 1bit 7bool3 flagsfalse
0x01bClientCheckEncroachmentOnNetUpdate : 1bit 0boolTransient+3 flagstrue
0x01bServerMoveIgnoreRootMotion : 1bit 1boolTransient+3 flagsfalse
0x01bWasJumping : 1bit 2boolTransient+8 flagsfalse
0x03620x02padding / unreflected
0x04JumpKeyHoldTimefloatTransient+10 flags0
0x04JumpForceTimeRemainingfloatTransient+10 flags0
0x04ProxyJumpForceStartedTimefloatTransient+10 flags0
0x04JumpMaxHoldTimefloatNet+7 flags0
0x04JumpMaxCountint32Net+7 flags1
0x04JumpCurrentCountint3210 flags0
0x04JumpCurrentCountPreJumpint3210 flags0
0x03800x08padding / unreflected
0x10OnReachedJumpApexFMulticastScriptDelegate4 flags<delegate>
0x03980x10padding / unreflected
0x10MovementModeChangedDelegateFMulticastScriptDelegate4 flags<delegate>
0x10OnCharacterMovementUpdatedFMulticastScriptDelegate4 flags<delegate>
0x38SavedRootMotionFRootMotionSourceGroupTransient+1 flags{bHasAdditiveSources=false, bHasOverrideSources=false, bHas…
0x40ClientRootMotionParamsFRootMotionMovementParamsTransient+2 flags{bHasRootMotion=false, BlendWeight=0, RootMotionTransform={…
0x10RootMotionRepMovesTArray<FSimulatedRootMotionReplicatedMove>Transient+3 flags[]
0x98RepRootMotionFRepRootMotionMontageNetRepNotify+2 flags{bIsActive=false, AnimMontage=nullptr, Position=0, Location…
Inherited from APawn 14
OffsetSizeNameTypeFlagsDefault
0x01bUseControllerRotationPitch : 1bit 0bool5 flagsfalse
0x01bUseControllerRotationYaw : 1bit 1bool5 flagsfalse
0x01bUseControllerRotationRoll : 1bit 2bool5 flagsfalse
0x01bCanAffectNavigationGeneration : 1bit 3bool6 flagsfalse
0x02590x03padding / unreflected
0x04BaseEyeHeightfloat7 flags64
0x01AutoPossessPlayerEAutoReceiveInput6 flagsDisabled
0x01AutoPossessAIEAutoPossessAI6 flagsPlacedInWorld
0x01RemoteViewPitchuint8Net+5 flags0
0x02630x05padding / unreflected
0x08AIControllerClassTSubclassOf<AController>8 flags/Script/AIModule.AIController
0x08PlayerStateAPlayerState*NetRepNotify+7 flagsnullptr
0x02780x08padding / unreflected
0x08LastHitByAController*Transient+7 flagsnullptr
0x08ControllerAController*NetRepNotify+5 flagsnullptr
0x02900x04padding / unreflected
0x0CControlInputVectorFVectorTransientProtected+5 flags{X=0, Y=0, Z=0}
0x0CLastControlInputVectorFVectorTransientProtected+5 flags{X=0, Y=0, Z=0}
Inherited from AActor 78
OffsetSizeNameTypeFlagsDefault
0x30PrimaryActorTickFActorTickFunction3 flags{}
0x01bNetTemporary : 1bit 0bool3 flagsfalse
0x01bNetStartup : 1bit 1bool3 flagsfalse
0x01bOnlyRelevantToOwner : 1bit 2bool7 flagsfalse
0x01bAlwaysRelevant : 1bit 3bool6 flagsfalse
0x01bReplicateMovement : 1bit 4boolNetRepNotify+5 flagsfalse
0x01bHidden : 1bit 5boolNet+7 flagsfalse
0x01bTearOff : 1bit 6boolNet+3 flagsfalse
0x01bForceNetAddressable : 1bit 7bool3 flagsfalse
0x01bExchangedRoles : 1bit 0boolTransient+3 flagsfalse
0x01bNetLoadOnClient : 1bit 1bool4 flagstrue
0x01bNetUseOwnerRelevancy : 1bit 2bool6 flagsfalse
0x01bRelevantForNetworkReplays : 1bit 3bool3 flagstrue
0x01bRelevantForLevelBounds : 1bit 4bool5 flagstrue
0x01bReplayRewindable : 1bit 5bool5 flagsfalse
0x01bAllowTickBeforeBeginPlay : 1bit 6bool5 flagsfalse
0x01bAutoDestroyWhenFinished : 1bit 7bool4 flagsfalse
0x01bCanBeDamaged : 1bit 0boolNet+6 flagstrue
0x01bBlockInput : 1bit 1bool5 flagsfalse
0x01bCollideWhenPlacing : 1bit 2bool3 flagsfalse
0x01bFindCameraComponentWhenViewTarget : 1bit 3bool6 flagstrue
0x01bGenerateOverlapEventsDuringLevelStreaming : 1bit 4bool5 flagsfalse
0x01bIgnoresOriginShifting : 1bit 5bool5 flagsfalse
0x01bEnableAutoLODGeneration : 1bit 6bool6 flagsfalse
0x01bIsEditorOnlyActor : 1bit 7bool5 flagsfalse
0x01bActorSeamlessTraveled : 1bit 0bool3 flagsfalse
0x01bReplicates : 1bit 1boolProtected+7 flagsfalse
0x01bCanBeInCluster : 1bit 2boolProtected+5 flagsfalse
0x01bAllowReceiveTickEventOnDedicatedServer : 1bit 3boolProtected+3 flagstrue
0x01bActorEnableCollision : 1bit 3bool3 flagstrue
0x01bActorIsBeingDestroyed : 1bit 4boolTransient+4 flagsfalse
0x01UpdateOverlapsMethodDuringLevelStreamingEActorUpdateOverlapsMethodProtected+6 flagsUseConfigDefault
0x01DefaultUpdateOverlapsMethodDuringLevelStreamingEActorUpdateOverlapsMethod8 flagsOnlyUpdateMovable
0x01RemoteRoleENetRoleNetTransient+5 flagsROLE_None
0x34ReplicatedMovementFRepMovementNetRepNotify+5 flags{LinearVelocity={X=0, Y=0, Z=0}, angularVelocity={X=0, Y=0,…
0x04InitialLifeSpanfloat8 flags0
0x04CustomTimeDilationfloat7 flags1
0x009C0x04padding / unreflected
0x40AttachmentReplicationFRepAttachmentNetTransient+4 flags{AttachParent=nullptr, LocationOffset={}, RelativeScale3D={…
0x08OwnerAActor*NetRepNotify+5 flagsnullptr
0x08NetDriverNameFNameProtected+5 flagsGameNetDriver
0x01RoleENetRoleNet+5 flagsROLE_Authority
0x01NetDormancyENetDormancy9 flagsDORM_Awake
0x01SpawnCollisionHandlingMethodESpawnActorCollisionHandlingMethod7 flagsAlwaysSpawn
0x01AutoReceiveInputEAutoReceiveInput6 flagsDisabled
0x04InputPriorityint326 flags0
0x08InputComponentUInputComponent*8 flagsnullptr
0x04NetCullDistanceSquaredfloat9 flags2.25e+08
0x04NetTagint32Transient+5 flags0
0x04NetUpdateFrequencyfloat8 flags100
0x04MinNetUpdateFrequencyfloat8 flags2
0x04NetPriorityfloat8 flags1
0x01140x04padding / unreflected
0x08InstigatorAPawn*NetRepNotify+7 flagsnullptr
0x10ChildrenTArray<AActor*>Transient+2 flags[]
0x08RootComponentUSceneComponent*Protected+9 flagsnullptr
0x10ControllingMatineeActorsTArray<AMatineeActor*>TransientProtected+2 flags[]
0x01480x08padding / unreflected
0x10LayersTArray<FName>2 flags[]
0x08ParentComponentTWeakObjectPtr<UChildActorComponent>8 flags<0xffffffff>
0x01680x08padding / unreflected
0x10TagsTArray<FName>5 flags[]
0x01OnTakeAnyDamageFMulticastScriptDelegate4 flags<delegate>
0x01OnTakePointDamageFMulticastScriptDelegate4 flags<delegate>
0x01OnTakeRadialDamageFMulticastScriptDelegate4 flags<delegate>
0x01OnActorBeginOverlapFMulticastScriptDelegate4 flags<delegate>
0x01OnActorEndOverlapFMulticastScriptDelegate4 flags<delegate>
0x01OnBeginCursorOverFMulticastScriptDelegate4 flags<delegate>
0x01OnEndCursorOverFMulticastScriptDelegate4 flags<delegate>
0x01OnClickedFMulticastScriptDelegate4 flags<delegate>
0x01OnReleasedFMulticastScriptDelegate4 flags<delegate>
0x01OnInputTouchBeginFMulticastScriptDelegate4 flags<delegate>
0x01OnInputTouchEndFMulticastScriptDelegate4 flags<delegate>
0x01OnInputTouchEnterFMulticastScriptDelegate4 flags<delegate>
0x01OnInputTouchLeaveFMulticastScriptDelegate4 flags<delegate>
0x01OnActorHitFMulticastScriptDelegate4 flags<delegate>
0x01OnDestroyedFMulticastScriptDelegate4 flags<delegate>
0x01OnActorTickChangedFMulticastScriptDelegate4 flags<delegate>
0x01OnEndPlayFMulticastScriptDelegate4 flags<delegate>
0x01910x67padding / unreflected
0x10InstanceComponentsTArray<UActorComponent*>4 flags[]
0x02080x10padding / unreflected
0x10BlueprintCreatedComponentsTArray<UActorComponent*>6 flags[]
0x02280x10padding / unreflected
0x18CachedActorValuesFAtlasOptimizationVolumeActorTransient+2 flags{ReferencedComponents=[]}

Functions 32

SignatureFlagsNativeParams
void StartOverlapRight(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, FHitResult& SweepResult)FinalNative+1 flags0xA8
void StartOverlapLeft(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, FHitResult& SweepResult)FinalNative+1 flags0xA8
void SixthSenseEndOverlap(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)FinalNative+1 flags0x1C
void SixthSenseBeginOverlap(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, FHitResult& SweepResult)FinalNative+1 flags0xA8
void SetupIKGrabbing(const EBikTaskIdentifier& GrabbingHand)FinalNative+1 flags0x01
void SetupForCutOffArm()FinalNative+1 flags0x00
void SetIsBossFight(bool isBossFight)FinalNative+1 flags0x01
void SetForceGrab(bool ForceGrab)FinalNative+1 flags0x01
void PursuitSixthSenseEndOverlap(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)FinalNative+1 flags0x1C
void PursuitSixthSenseBeginOverlap(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, FHitResult& SweepResult)FinalNative+1 flags0xA8
void OnTransferToHand(const FName& NotifyName)FinalNative+1 flags0x08
void OnTouchGrabStarted()EventPublic0x00
void OnStartedNormalGrab(const FName& NotifyName)FinalNative+1 flags0x08
void OnNotifyEnableIK(const FName& NotifyName)FinalNative+1 flags0x08
void OnNotifyDisableIK(const FName& NotifyName)FinalNative+1 flags0x08
void OnLeftMovementState(const FName& NotifyName)FinalNative+1 flags0x08
void OnGrabNotify(const FName& NotifyName)FinalNative+1 flags0x08
void OnFinishedOnTopEntry(const FName& NotifyName)FinalNative+1 flags0x08
void NotifyFinishedQuickTurn(const FName& NotifyName)FinalNative+1 flags0x08
bool HasTouchHotspot(const EAtlasAILimb& Limb)FinalNative+1 flags0x02
void HandEndOverlap(AActor* Actor, const EAtlasAILimb& OverlappingLimb)FinalNative+1 flags0x09
FName GetSoundMaterial(const EAtlasAILimb& Limb, bool ShowDebug)FinalNative+1 flags0x0C
float GetSixthSenseRange()FinalNative+1 flags0x04
float GetPredictedGrabDistance()FinalNative+1 flags0x04
float GetPredictedGrabAngle()FinalNative+1 flags0x04
UAnimSequence* GetHotspotAnimation(const EAtlasAILimb& Limb)FinalNative+1 flags0x10
void EndOverlapRight(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)FinalNative+1 flags0x1C
void EndOverlapLeft(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)FinalNative+1 flags0x1C
void EnableTouchGrab()FinalNative+1 flags0x00
void DisableTouchGrabs()FinalNative+1 flags0x00
void DisableGrab()FinalNative+1 flags0x00
void CancelGrab()FinalNative+1 flags0x00

Subclasses 1

Used by 1

types with a member, parameter or interface of this type