class C_OP_WorldTraceConstraint : public CParticleFunctionConstraint
{
public:
    // MPropertyFriendlyName = control point for fast collision tests
    int32 m_nCP;
    // MPropertyFriendlyName = control point offset for fast collisions
    // MVectorIsCoordinate
    Vector m_vecCpOffset;
    // MPropertyFriendlyName = collision mode
    ParticleCollisionMode_t m_nCollisionMode;
    // MPropertyFriendlyName = minimum detail collision mode
    ParticleCollisionMode_t m_nCollisionModeMin;
    // MPropertyStartGroup = Collision Options
    // MPropertyFriendlyName = Trace Set
    ParticleTraceSet_t m_nTraceSet;
    // MPropertyFriendlyName = collision group
    char m_CollisionGroupName[128];
    // MPropertyFriendlyName = World Only
    bool m_bWorldOnly;
    // MPropertyFriendlyName = brush only
    bool m_bBrushOnly;
    // MPropertyFriendlyName = include water
    // MPropertySuppressExpr = m_nTraceSet == PARTICLE_TRACE_SET_STATIC
    bool m_bIncludeWater;
    // MPropertyFriendlyName = CP Entity to Ignore for Collisions
    // MPropertySuppressExpr = m_nTraceSet == PARTICLE_TRACE_SET_STATIC
    int32 m_nIgnoreCP;
    // MPropertyFriendlyName = control point movement distance tolerance
    // MPropertySuppressExpr = m_nCollisionMode == COLLISION_MODE_PER_PARTICLE_TRACE
    float32 m_flCpMovementTolerance;
    // MPropertyFriendlyName = plane cache retest rate
    // MPropertySuppressExpr = m_nCollisionMode != COLLISION_MODE_PER_FRAME_PLANESET
    float32 m_flRetestRate;
    // MPropertyFriendlyName = trace accuracy tolerance
    // MPropertySuppressExpr = m_nCollisionMode != COLLISION_MODE_USE_NEAREST_TRACE
    float32 m_flTraceTolerance;
    // MPropertyFriendlyName = Confirm Collision Speed Threshold
    // MPropertySuppressExpr = m_nCollisionMode == COLLISION_MODE_PER_PARTICLE_TRACE
    float32 m_flCollisionConfirmationSpeed;
    // MPropertyFriendlyName = Max Confirmation Traces Per Fame
    // MPropertySuppressExpr = m_nCollisionMode == COLLISION_MODE_PER_PARTICLE_TRACE
    float32 m_nMaxTracesPerFrame;
    // MPropertyStartGroup = Impact Options
    // MPropertyFriendlyName = radius scale
    CPerParticleFloatInput m_flRadiusScale;
    // MPropertyFriendlyName = amount of bounce
    CPerParticleFloatInput m_flBounceAmount;
    // MPropertyFriendlyName = amount of slide
    CPerParticleFloatInput m_flSlideAmount;
    // MPropertyFriendlyName = Random Direction scale
    CPerParticleFloatInput m_flRandomDirScale;
    // MPropertyFriendlyName = Add Decay to Bounce
    bool m_bDecayBounce;
    // MPropertyFriendlyName = kill particle on collision
    bool m_bKillonContact;
    // MPropertyFriendlyName = minimum speed to kill on collision
    float32 m_flMinSpeed;
    // MPropertyFriendlyName = Set Normal
    bool m_bSetNormal;
    // MPropertyFriendlyName = Stick On Collision Cache Field
    // MPropertyAttributeChoiceName = particlefield_vector
    ParticleAttributeIndex_t m_nStickOnCollisionField;
    // MPropertyFriendlyName = Speed to stop when sticking
    CPerParticleFloatInput m_flStopSpeed;
    // MPropertyFriendlyName = Entity Hitbox Cache Field (Requires Stick on Collision)
    // MPropertyAttributeChoiceName = particlefield_vector
    ParticleAttributeIndex_t m_nEntityStickDataField;
    // MPropertyFriendlyName = Entity Normal Cache Field (Requires Stick on Collision)
    // MPropertyAttributeChoiceName = particlefield_vector
    ParticleAttributeIndex_t m_nEntityStickNormalField;
};

KV3 Class Defaults

{
    _class = "C_OP_WorldTraceConstraint"
    m_flOpStrength = 
    {
        m_nType = "PF_TYPE_LITERAL"
        m_nMapType = "PF_MAP_TYPE_DIRECT"
        m_flLiteralValue = 1.0
        m_NamedValue = ""
        m_nControlPoint = 0
        m_nScalarAttribute = 3
        m_nVectorAttribute = 6
        m_nVectorComponent = 0
        m_bReverseOrder = false
        m_flRandomMin = 0.0
        m_flRandomMax = 1.0
        m_bHasRandomSignFlip = false
        m_nRandomSeed = -1
        m_nRandomMode = "PF_RANDOM_MODE_CONSTANT"
        m_strSnapshotSubset = ""
        m_flLOD0 = 0.0
        m_flLOD1 = 0.0
        m_flLOD2 = 0.0
        m_flLOD3 = 0.0
        m_nNoiseInputVectorAttribute = 0
        m_flNoiseOutputMin = 0.0
        m_flNoiseOutputMax = 1.0
        m_flNoiseScale = 0.1
        m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ]
        m_flNoiseOffset = 0.0
        m_nNoiseOctaves = 1
        m_nNoiseTurbulence = "PF_NOISE_TURB_NONE"
        m_nNoiseType = "PF_NOISE_TYPE_PERLIN"
        m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE"
        m_flNoiseTurbulenceScale = 1.0
        m_flNoiseTurbulenceMix = 0.5
        m_flNoiseImgPreviewScale = 1.0
        m_bNoiseImgPreviewLive = true
        m_flNoCameraFallback = 0.0
        m_bUseBoundsCenter = false
        m_nInputMode = "PF_INPUT_MODE_CLAMPED"
        m_flMultFactor = 1.0
        m_flInput0 = 0.0
        m_flInput1 = 1.0
        m_flOutput0 = 0.0
        m_flOutput1 = 1.0
        m_flNotchedRangeMin = 0.0
        m_flNotchedRangeMax = 1.0
        m_flNotchedOutputOutside = 0.0
        m_flNotchedOutputInside = 1.0
        m_nRoundType = "PF_ROUND_TYPE_NEAREST"
        m_nBiasType = "PF_BIAS_TYPE_STANDARD"
        m_flBiasParameter = 0.0
        m_Curve = 
        {
            m_spline = [  ]
            m_tangents = [  ]
            m_vDomainMins = [ 0.0, 0.0 ]
            m_vDomainMaxs = [ 0.0, 0.0 ]
        }
    }
    m_nOpEndCapState = "PARTICLE_ENDCAP_ALWAYS_ON"
    m_nToolsState = "PARTICLE_TOOLS_STATE_ALWAYS_ON"
    m_flOpStartFadeInTime = 0.0
    m_flOpEndFadeInTime = 0.0
    m_flOpStartFadeOutTime = 0.0
    m_flOpEndFadeOutTime = 0.0
    m_flOpFadeOscillatePeriod = 0.0
    m_bNormalizeToStopTime = false
    m_flOpTimeOffsetMin = 0.0
    m_flOpTimeOffsetMax = 0.0
    m_nOpTimeOffsetSeed = 0
    m_nOpTimeScaleSeed = 0
    m_flOpTimeScaleMin = 1.0
    m_flOpTimeScaleMax = 1.0
    m_bDisableOperator = false
    m_Notes = ""
    m_nCP = 0
    m_vecCpOffset = [ 0.0, 0.0, 0.0 ]
    m_nCollisionMode = "COLLISION_MODE_PER_PARTICLE_TRACE"
    m_nCollisionModeMin = "COLLISION_MODE_DISABLED"
    m_nTraceSet = "PARTICLE_TRACE_SET_ALL"
    m_CollisionGroupName = "NONE"
    m_bWorldOnly = false
    m_bBrushOnly = false
    m_bIncludeWater = false
    m_nIgnoreCP = -1
    m_flCpMovementTolerance = 5.0
    m_flRetestRate = -1.0
    m_flTraceTolerance = 24.0
    m_flCollisionConfirmationSpeed = 24.0
    m_nMaxTracesPerFrame = -1.0
    m_flRadiusScale = 
    {
        m_nType = "PF_TYPE_LITERAL"
        m_nMapType = "PF_MAP_TYPE_DIRECT"
        m_flLiteralValue = 1.0
        m_NamedValue = ""
        m_nControlPoint = 0
        m_nScalarAttribute = 3
        m_nVectorAttribute = 6
        m_nVectorComponent = 0
        m_bReverseOrder = false
        m_flRandomMin = 0.0
        m_flRandomMax = 1.0
        m_bHasRandomSignFlip = false
        m_nRandomSeed = -1
        m_nRandomMode = "PF_RANDOM_MODE_CONSTANT"
        m_strSnapshotSubset = ""
        m_flLOD0 = 0.0
        m_flLOD1 = 0.0
        m_flLOD2 = 0.0
        m_flLOD3 = 0.0
        m_nNoiseInputVectorAttribute = 0
        m_flNoiseOutputMin = 0.0
        m_flNoiseOutputMax = 1.0
        m_flNoiseScale = 0.1
        m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ]
        m_flNoiseOffset = 0.0
        m_nNoiseOctaves = 1
        m_nNoiseTurbulence = "PF_NOISE_TURB_NONE"
        m_nNoiseType = "PF_NOISE_TYPE_PERLIN"
        m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE"
        m_flNoiseTurbulenceScale = 1.0
        m_flNoiseTurbulenceMix = 0.5
        m_flNoiseImgPreviewScale = 1.0
        m_bNoiseImgPreviewLive = true
        m_flNoCameraFallback = 0.0
        m_bUseBoundsCenter = false
        m_nInputMode = "PF_INPUT_MODE_CLAMPED"
        m_flMultFactor = 1.0
        m_flInput0 = 0.0
        m_flInput1 = 1.0
        m_flOutput0 = 0.0
        m_flOutput1 = 1.0
        m_flNotchedRangeMin = 0.0
        m_flNotchedRangeMax = 1.0
        m_flNotchedOutputOutside = 0.0
        m_flNotchedOutputInside = 1.0
        m_nRoundType = "PF_ROUND_TYPE_NEAREST"
        m_nBiasType = "PF_BIAS_TYPE_STANDARD"
        m_flBiasParameter = 0.0
        m_Curve = 
        {
            m_spline = [  ]
            m_tangents = [  ]
            m_vDomainMins = [ 0.0, 0.0 ]
            m_vDomainMaxs = [ 0.0, 0.0 ]
        }
    }
    m_flBounceAmount = 
    {
        m_nType = "PF_TYPE_LITERAL"
        m_nMapType = "PF_MAP_TYPE_DIRECT"
        m_flLiteralValue = 0.0
        m_NamedValue = ""
        m_nControlPoint = 0
        m_nScalarAttribute = 3
        m_nVectorAttribute = 6
        m_nVectorComponent = 0
        m_bReverseOrder = false
        m_flRandomMin = 0.0
        m_flRandomMax = 1.0
        m_bHasRandomSignFlip = false
        m_nRandomSeed = -1
        m_nRandomMode = "PF_RANDOM_MODE_CONSTANT"
        m_strSnapshotSubset = ""
        m_flLOD0 = 0.0
        m_flLOD1 = 0.0
        m_flLOD2 = 0.0
        m_flLOD3 = 0.0
        m_nNoiseInputVectorAttribute = 0
        m_flNoiseOutputMin = 0.0
        m_flNoiseOutputMax = 1.0
        m_flNoiseScale = 0.1
        m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ]
        m_flNoiseOffset = 0.0
        m_nNoiseOctaves = 1
        m_nNoiseTurbulence = "PF_NOISE_TURB_NONE"
        m_nNoiseType = "PF_NOISE_TYPE_PERLIN"
        m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE"
        m_flNoiseTurbulenceScale = 1.0
        m_flNoiseTurbulenceMix = 0.5
        m_flNoiseImgPreviewScale = 1.0
        m_bNoiseImgPreviewLive = true
        m_flNoCameraFallback = 0.0
        m_bUseBoundsCenter = false
        m_nInputMode = "PF_INPUT_MODE_CLAMPED"
        m_flMultFactor = 1.0
        m_flInput0 = 0.0
        m_flInput1 = 1.0
        m_flOutput0 = 0.0
        m_flOutput1 = 1.0
        m_flNotchedRangeMin = 0.0
        m_flNotchedRangeMax = 1.0
        m_flNotchedOutputOutside = 0.0
        m_flNotchedOutputInside = 1.0
        m_nRoundType = "PF_ROUND_TYPE_NEAREST"
        m_nBiasType = "PF_BIAS_TYPE_STANDARD"
        m_flBiasParameter = 0.0
        m_Curve = 
        {
            m_spline = [  ]
            m_tangents = [  ]
            m_vDomainMins = [ 0.0, 0.0 ]
            m_vDomainMaxs = [ 0.0, 0.0 ]
        }
    }
    m_flSlideAmount = 
    {
        m_nType = "PF_TYPE_LITERAL"
        m_nMapType = "PF_MAP_TYPE_DIRECT"
        m_flLiteralValue = 0.0
        m_NamedValue = ""
        m_nControlPoint = 0
        m_nScalarAttribute = 3
        m_nVectorAttribute = 6
        m_nVectorComponent = 0
        m_bReverseOrder = false
        m_flRandomMin = 0.0
        m_flRandomMax = 1.0
        m_bHasRandomSignFlip = false
        m_nRandomSeed = -1
        m_nRandomMode = "PF_RANDOM_MODE_CONSTANT"
        m_strSnapshotSubset = ""
        m_flLOD0 = 0.0
        m_flLOD1 = 0.0
        m_flLOD2 = 0.0
        m_flLOD3 = 0.0
        m_nNoiseInputVectorAttribute = 0
        m_flNoiseOutputMin = 0.0
        m_flNoiseOutputMax = 1.0
        m_flNoiseScale = 0.1
        m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ]
        m_flNoiseOffset = 0.0
        m_nNoiseOctaves = 1
        m_nNoiseTurbulence = "PF_NOISE_TURB_NONE"
        m_nNoiseType = "PF_NOISE_TYPE_PERLIN"
        m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE"
        m_flNoiseTurbulenceScale = 1.0
        m_flNoiseTurbulenceMix = 0.5
        m_flNoiseImgPreviewScale = 1.0
        m_bNoiseImgPreviewLive = true
        m_flNoCameraFallback = 0.0
        m_bUseBoundsCenter = false
        m_nInputMode = "PF_INPUT_MODE_CLAMPED"
        m_flMultFactor = 1.0
        m_flInput0 = 0.0
        m_flInput1 = 1.0
        m_flOutput0 = 0.0
        m_flOutput1 = 1.0
        m_flNotchedRangeMin = 0.0
        m_flNotchedRangeMax = 1.0
        m_flNotchedOutputOutside = 0.0
        m_flNotchedOutputInside = 1.0
        m_nRoundType = "PF_ROUND_TYPE_NEAREST"
        m_nBiasType = "PF_BIAS_TYPE_STANDARD"
        m_flBiasParameter = 0.0
        m_Curve = 
        {
            m_spline = [  ]
            m_tangents = [  ]
            m_vDomainMins = [ 0.0, 0.0 ]
            m_vDomainMaxs = [ 0.0, 0.0 ]
        }
    }
    m_flRandomDirScale = 
    {
        m_nType = "PF_TYPE_LITERAL"
        m_nMapType = "PF_MAP_TYPE_DIRECT"
        m_flLiteralValue = 0.0
        m_NamedValue = ""
        m_nControlPoint = 0
        m_nScalarAttribute = 3
        m_nVectorAttribute = 6
        m_nVectorComponent = 0
        m_bReverseOrder = false
        m_flRandomMin = 0.0
        m_flRandomMax = 1.0
        m_bHasRandomSignFlip = false
        m_nRandomSeed = -1
        m_nRandomMode = "PF_RANDOM_MODE_CONSTANT"
        m_strSnapshotSubset = ""
        m_flLOD0 = 0.0
        m_flLOD1 = 0.0
        m_flLOD2 = 0.0
        m_flLOD3 = 0.0
        m_nNoiseInputVectorAttribute = 0
        m_flNoiseOutputMin = 0.0
        m_flNoiseOutputMax = 1.0
        m_flNoiseScale = 0.1
        m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ]
        m_flNoiseOffset = 0.0
        m_nNoiseOctaves = 1
        m_nNoiseTurbulence = "PF_NOISE_TURB_NONE"
        m_nNoiseType = "PF_NOISE_TYPE_PERLIN"
        m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE"
        m_flNoiseTurbulenceScale = 1.0
        m_flNoiseTurbulenceMix = 0.5
        m_flNoiseImgPreviewScale = 1.0
        m_bNoiseImgPreviewLive = true
        m_flNoCameraFallback = 0.0
        m_bUseBoundsCenter = false
        m_nInputMode = "PF_INPUT_MODE_CLAMPED"
        m_flMultFactor = 1.0
        m_flInput0 = 0.0
        m_flInput1 = 1.0
        m_flOutput0 = 0.0
        m_flOutput1 = 1.0
        m_flNotchedRangeMin = 0.0
        m_flNotchedRangeMax = 1.0
        m_flNotchedOutputOutside = 0.0
        m_flNotchedOutputInside = 1.0
        m_nRoundType = "PF_ROUND_TYPE_NEAREST"
        m_nBiasType = "PF_BIAS_TYPE_STANDARD"
        m_flBiasParameter = 0.0
        m_Curve = 
        {
            m_spline = [  ]
            m_tangents = [  ]
            m_vDomainMins = [ 0.0, 0.0 ]
            m_vDomainMaxs = [ 0.0, 0.0 ]
        }
    }
    m_bDecayBounce = false
    m_bKillonContact = false
    m_flMinSpeed = -1.0
    m_bSetNormal = false
    m_nStickOnCollisionField = 19
    m_flStopSpeed = 
    {
        m_nType = "PF_TYPE_LITERAL"
        m_nMapType = "PF_MAP_TYPE_DIRECT"
        m_flLiteralValue = -1.0
        m_NamedValue = ""
        m_nControlPoint = 0
        m_nScalarAttribute = 3
        m_nVectorAttribute = 6
        m_nVectorComponent = 0
        m_bReverseOrder = false
        m_flRandomMin = 0.0
        m_flRandomMax = 1.0
        m_bHasRandomSignFlip = false
        m_nRandomSeed = -1
        m_nRandomMode = "PF_RANDOM_MODE_CONSTANT"
        m_strSnapshotSubset = ""
        m_flLOD0 = 0.0
        m_flLOD1 = 0.0
        m_flLOD2 = 0.0
        m_flLOD3 = 0.0
        m_nNoiseInputVectorAttribute = 0
        m_flNoiseOutputMin = 0.0
        m_flNoiseOutputMax = 1.0
        m_flNoiseScale = 0.1
        m_vecNoiseOffsetRate = [ 0.0, 0.0, 0.0 ]
        m_flNoiseOffset = 0.0
        m_nNoiseOctaves = 1
        m_nNoiseTurbulence = "PF_NOISE_TURB_NONE"
        m_nNoiseType = "PF_NOISE_TYPE_PERLIN"
        m_nNoiseModifier = "PF_NOISE_MODIFIER_NONE"
        m_flNoiseTurbulenceScale = 1.0
        m_flNoiseTurbulenceMix = 0.5
        m_flNoiseImgPreviewScale = 1.0
        m_bNoiseImgPreviewLive = true
        m_flNoCameraFallback = 0.0
        m_bUseBoundsCenter = false
        m_nInputMode = "PF_INPUT_MODE_CLAMPED"
        m_flMultFactor = 1.0
        m_flInput0 = 0.0
        m_flInput1 = 1.0
        m_flOutput0 = 0.0
        m_flOutput1 = 1.0
        m_flNotchedRangeMin = 0.0
        m_flNotchedRangeMax = 1.0
        m_flNotchedOutputOutside = 0.0
        m_flNotchedOutputInside = 1.0
        m_nRoundType = "PF_ROUND_TYPE_NEAREST"
        m_nBiasType = "PF_BIAS_TYPE_STANDARD"
        m_flBiasParameter = 0.0
        m_Curve = 
        {
            m_spline = [  ]
            m_tangents = [  ]
            m_vDomainMins = [ 0.0, 0.0 ]
            m_vDomainMaxs = [ 0.0, 0.0 ]
        }
    }
    m_nEntityStickDataField = 19
    m_nEntityStickNormalField = 19
}