コード例 #1
0
    void El_DrawAnimatorSetup()
    {
        GUILayout.Space(6);

        bool detected = true;

        if (Get.BaseTransform)
        {
            if (Get.SyncWithAnimator)
            {
                detected = FGUI_Finders.CheckForAnimator(Get.BaseTransform.gameObject);
            }
        }
        if (!detected)
        {
            GUI.color = new Color(.9f, .9f, 0.6f, 1f);
        }

        EditorGUILayout.BeginHorizontal();
        EditorGUIUtility.labelWidth = 147;
        EditorGUILayout.PropertyField(sp_SyncWithAnimator);
        EditorGUIUtility.labelWidth = 0;
        EditorGUILayout.PropertyField(sp_StartAfterTPose);
        EditorGUILayout.EndHorizontal();

        if (Get.SyncWithAnimator)
        {
            GUILayout.Space(6);
            EditorGUILayout.BeginHorizontal();
            EditorGUIUtility.labelWidth = 156;
            EditorGUILayout.PropertyField(sp_DetectZeroKeyframes);
            EditorGUIUtility.labelWidth = 0;

            EditorGUILayout.EndHorizontal();
        }
        else
        {
        }

        GUI.color = c;

        GUILayout.Space(6);
    }
コード例 #2
0
        //private SerializedProperty sp_IKMaxStretching;
        //private SerializedProperty sp_IKStretchCurve;

        protected virtual void OnEnable()
        {
            FGUI_Finders.ResetFinders();

            sp_StartBone           = serializedObject.FindProperty("StartBone");
            sp_SmoothingStyle      = serializedObject.FindProperty("SmoothingStyle");
            sp_ReactSpeed          = serializedObject.FindProperty("ReactionSpeed");
            sp_RotRelev            = serializedObject.FindProperty("RotationRelevancy");
            sp_Sustain             = serializedObject.FindProperty("Sustain");
            sp_MaxStretching       = serializedObject.FindProperty("MaxStretching");
            sp_Springiness         = serializedObject.FindProperty("Springiness");
            sp_SpringinessCurling  = serializedObject.FindProperty("SpringyCurling");
            sp_Slithery            = serializedObject.FindProperty("Slithery");
            sp_UpdateRate          = serializedObject.FindProperty("UpdateRate");
            sp_DeltaType           = serializedObject.FindProperty("DeltaType");
            sp_TailAnimatorAmount  = serializedObject.FindProperty("TailAnimatorAmount");
            sp_DetectZeroKeyframes = serializedObject.FindProperty("DetectZeroKeyframes");
            sp_UpdateAsLast        = serializedObject.FindProperty("UpdateAsLast");
            sp_SyncWithAnimator    = serializedObject.FindProperty("SyncWithAnimator");
            sp_StartAfterTPose     = serializedObject.FindProperty("StartAfterTPose");
            sp_EndBoneJointOffset  = serializedObject.FindProperty("EndBoneJointOffset");
            sp_Boost    = serializedObject.FindProperty("Tangle");
            sp_collMode = serializedObject.FindProperty("CollisionMode");

            sp_AnimatePhysics   = serializedObject.FindProperty("AnimatePhysics");
            sp_FixedCycle       = serializedObject.FindProperty("FixedCycle");
            sp_LengthMultiplier = serializedObject.FindProperty("LengthMultiplier");
            sp_smoothdelta      = serializedObject.FindProperty("SafeDeltaTime");
            sp_useCollision     = serializedObject.FindProperty("UseCollision");
            sp_curving          = serializedObject.FindProperty("Curving");
            sp_DynamicWorldCollidersInclusion = serializedObject.FindProperty("DynamicWorldCollidersInclusion");
            sp_gravity         = serializedObject.FindProperty("Gravity");
            sp_InclusionRadius = serializedObject.FindProperty("InclusionRadius");
            sp_colScale        = serializedObject.FindProperty("CollidersScaleCurve");
            sp_colScaleMul     = serializedObject.FindProperty("CollidersScaleMul");
            sp_colBoxDim       = serializedObject.FindProperty("BoxesDimensionsMul");
            sp_colDiffFact     = serializedObject.FindProperty("CollisionsAutoCurve");
            sp_colWithOther    = serializedObject.FindProperty("CollideWithOtherTails");
            sp_RigidbodyMass   = serializedObject.FindProperty("RigidbodyMass");
            sp_Detach          = serializedObject.FindProperty("DetachChildren");


            sp_colIgnored         = serializedObject.FindProperty("IgnoredColliders");
            sp_Unify              = serializedObject.FindProperty("UnifyBendiness");
            sp_AnimateRoll        = serializedObject.FindProperty("AnimateRoll");
            sp_Axis2D             = serializedObject.FindProperty("Axis2D");
            sp_colSameLayer       = serializedObject.FindProperty("CollidersSameLayer");
            sp_colCustomLayer     = serializedObject.FindProperty("CollidersLayer");
            sp_colAddRigs         = serializedObject.FindProperty("CollidersAddRigidbody");
            sp_RootRotationOffset = serializedObject.FindProperty("RootRotationOffset");
            sp_RootPositionOffset = serializedObject.FindProperty("RootPositionOffset");
            sp_CollisionSpace     = serializedObject.FindProperty("CollisionSpace");
            sp_ReflectCollision   = serializedObject.FindProperty("ReflectCollision");
            sp_IncludedColliders  = serializedObject.FindProperty("IncludedColliders");
            sp_DetailedCollision  = serializedObject.FindProperty("CheapCollision");
            sp_IncludedColliders  = serializedObject.FindProperty("IncludedColliders");

            sp_AngleLimit     = serializedObject.FindProperty("AngleLimit");
            sp_AngleLimitAxis = serializedObject.FindProperty("AngleLimitAxis");
            //sp_AngleLimitAxisTo = serializedObject.FindProperty("LimitAxisRange");
            sp_LimitSmoothing   = serializedObject.FindProperty("LimitSmoothing");
            sp_MotionInfluence  = serializedObject.FindProperty("MotionInfluence");
            sp_CollidersType    = serializedObject.FindProperty("CollidersType");
            sp_OptimizeWithMesh = serializedObject.FindProperty("OptimizeWithMesh");

            sp_altWave           = serializedObject.FindProperty("AlternateWave");
            sp_wavType           = serializedObject.FindProperty("WavingType");
            sp_useWav            = serializedObject.FindProperty("UseWaving");
            sp_cosAd             = serializedObject.FindProperty("CosinusAdd");
            sp_wavSp             = serializedObject.FindProperty("WavingSpeed");
            sp_wavRa             = serializedObject.FindProperty("WavingRange");
            sp_wavAx             = serializedObject.FindProperty("WavingAxis");
            sp_tailRotOff        = serializedObject.FindProperty("RotationOffset");
            sp_BlendCurve        = serializedObject.FindProperty("BlendCurve");
            sp_CollisionSlippery = serializedObject.FindProperty("CollisionSlippery");
            //sp_BlendChainValue = serializedObject.FindProperty("BlendChainValue");
            //sp_BlendChainFaloff = serializedObject.FindProperty("BlendChainFaloff");

            sp_UsePosSpeedCurve             = serializedObject.FindProperty("UsePosSpeedCurve");
            sp_UseRotSpeedCurve             = serializedObject.FindProperty("UseRotSpeedCurve");
            sp_UseSlitCurve                 = serializedObject.FindProperty("UseSlitheryCurve");
            sp_UseCurvingCurve              = serializedObject.FindProperty("UseCurvingCurve");
            sp_UseLengthMulCurve            = serializedObject.FindProperty("UseLengthMulCurve");
            sp_UseGravCurv                  = serializedObject.FindProperty("UseGravityCurve");
            sp_PosCurve                     = serializedObject.FindProperty("PosCurve");
            sp_RotCurve                     = serializedObject.FindProperty("RotCurve");
            sp_SlitCurve                    = serializedObject.FindProperty("SlitheryCurve");
            sp_CurvCurve                    = serializedObject.FindProperty("CurvCurve");
            sp_LengthMulCurve               = serializedObject.FindProperty("LengthMulCurve");
            sp_InclusionRadius              = serializedObject.FindProperty("InclusionRadius");
            sp_GravityCurve                 = serializedObject.FindProperty("GravityCurve");
            sp_SpringCurve                  = serializedObject.FindProperty("SpringCurve");
            sp_UseSpringCurve               = serializedObject.FindProperty("UseSpringCurve");
            sp_UseSlipperyCurve             = serializedObject.FindProperty("UseSlipperyCurve");
            sp_SlipperyCurve                = serializedObject.FindProperty("SlipperyCurve");
            sp_UseCurlingCurve              = serializedObject.FindProperty("UseCurlingCurve");
            sp_IgnoreMeshColliders          = serializedObject.FindProperty("IgnoreMeshColliders");
            sp_CollideWithDisabledColliders = serializedObject.FindProperty("CollideWithDisabledColliders");
            sp_Curling             = serializedObject.FindProperty("Curling");
            sp_CurlingCurve        = serializedObject.FindProperty("CurlingCurve");
            sp_UseWind             = serializedObject.FindProperty("UseWind");
            sp_WindEffectPower     = serializedObject.FindProperty("WindEffectPower");
            sp_WindTurbulencePower = serializedObject.FindProperty("WindTurbulencePower");
            sp_WindWorldNoisePower = serializedObject.FindProperty("WindWorldNoisePower");
            //sp_SimulationSpeed = serializedObject.FindProperty("SimulationSpeed");
            sp_Optim   = serializedObject.FindProperty("InterpolateRate");
            sp_Prewarm = serializedObject.FindProperty("Prewarm");

            sp_UseIK                = serializedObject.FindProperty("UseIK");
            sp_usePartialBlend      = serializedObject.FindProperty("UsePartialBlend");
            sp_IKTarget             = serializedObject.FindProperty("IKTarget");
            sp_IKAutoWeights        = serializedObject.FindProperty("IKAutoWeights");
            sp_IKweightCurve        = serializedObject.FindProperty("IKReactionWeightCurve");
            sp_IKAutoAngleLimit     = serializedObject.FindProperty("IKAutoAngleLimit");
            sp_IKAutoAngleLimits    = serializedObject.FindProperty("IKAutoAngleLimits");
            sp_IKReactionQuality    = serializedObject.FindProperty("IKReactionQuality");
            sp_IKSmoothing          = serializedObject.FindProperty("IKSmoothing");
            sp_IKBaseReactionWeight = serializedObject.FindProperty("IKBaseReactionWeight");
            sp_IKContinous          = serializedObject.FindProperty("IKContinousSolve");
            //sp_IKMaxStretching = serializedObject.FindProperty("IKMaxStretching");
            //sp_IKStretchCurve = serializedObject.FindProperty("IKStretchCurve");
            sp_IKLimitSettings = serializedObject.FindProperty("IKLimitSettings");
            sp_IKBlend         = serializedObject.FindProperty("IKBlend");
            sp_IKAnimatorBlend = serializedObject.FindProperty("IKAnimatorBlend");

            sp_Deflection            = serializedObject.FindProperty("Deflection");
            sp_DeflectionFalloff     = serializedObject.FindProperty("DeflectionFalloff");
            sp_DeflectionSmooth      = serializedObject.FindProperty("DeflectionSmooth");
            sp_DeflectionStartAngle  = serializedObject.FindProperty("DeflectionStartAngle");
            sp_DeflectOnlyCollisions = serializedObject.FindProperty("DeflectOnlyCollisions");

            sp_UseMaxDistance       = serializedObject.FindProperty("UseMaxDistance");
            sp_DistanceFrom         = serializedObject.FindProperty("DistanceFrom");
            sp_MaximumDistance      = serializedObject.FindProperty("MaximumDistance");
            sp_MaxOutDistanceFactor = serializedObject.FindProperty("MaxOutDistanceFactor");
            sp_DistanceWithoutY     = serializedObject.FindProperty("DistanceWithoutY");
            sp_DistanceMeasurePoint = serializedObject.FindProperty("DistanceMeasurePoint");
            sp_FadeDuration         = serializedObject.FindProperty("FadeDuration");


            FindComponents();
            Get.CheckForNullsInGhostChain();

            // First assignment
            if (!startBone)
            {
                if (skins.Count != 0)
                {
                    // If skins found ad this transform is part of any skeleton then this transform will be start bone
                    bool contains = false;

                    for (int i = 0; i < skins.Count; i++)
                    {
                        if (contains)
                        {
                            break;
                        }

                        for (int b = 0; b < skins[i].bones.Length; b++)
                        {
                            if (skins[i].bones[b] == Get.transform)
                            {
                                contains = true; break;
                            }
                        }
                    }

                    if (contains)
                    {
                        startBone = Get.transform;
                        Get.GetGhostChain();
                    }
                    else
                    {
                        // If skins are found, we assigning first bone from it
                        startBone = largestSkin.bones[0];
                        Get.GetGhostChain();
                    }
                }
            }


            if (Get._TransformsGhostChain == null)
            {
                Get._TransformsGhostChain = new System.Collections.Generic.List <Transform>();
                serializedObject.ApplyModifiedProperties();
                serializedObject.Update();
            }


            if (Get.UseIK || Get.UseWaving)
            {
                if (Get.UseWaving)
                {
                    drawWaving = true;
                }
                else
                {
                    drawWaving = false;
                }
            }

            if (Get.UnifyBendiness > 0f || Get.Sustain > 0f)
            {
                drawTweakAdditional = true;
            }

            if (((Get.ReactionSpeed >= 1f || Get.ReactionSpeed >= 0.99f) && !Get.UseRotSpeedCurve) && (Get.RotationRelevancy >= 1f && !Get.UseRotSpeedCurve))
            {
                drawSmoothing = false;
            }
            else
            if (Get.UseRotSpeedCurve || Get.UsePosSpeedCurve)
            {
                drawSmoothing = true;
            }

            if (Get.UseCollision)
            {
                drawCollisions = true;
            }

            if (Get.Deflection > Mathf.Epsilon)
            {
                drawDefl = true;
            }

            if (Get._editor_animatorViewedCounter < 1)
            {
                Get._editor_animatorViewedCounter++;

                if (startBone == null)
                {
                    topWarning      = "No skinned bones found - assign 'Start Bone'";
                    topWarningAlpha = 1.5f;
                }
                else
                {
                    topWarning      = "Automatically found start bone - please check if it is correct one";
                    topWarningAlpha = 1.85f;
                }
            }

            SetupLangs();
        }
コード例 #3
0
    protected virtual void OnEnable()
    {
        //sp_spines = serializedObject.FindProperty("SpineTransforms");
        sp_forw = serializedObject.FindProperty("BaseTransform");
        //sp_drawg = serializedObject.FindProperty("drawGizmos");

        sp_SpineAnimatorAmount = serializedObject.FindProperty("SpineAnimatorAmount");
        sp_LastBoneLeading     = serializedObject.FindProperty("LastBoneLeading");
        sp_ReverseForward      = serializedObject.FindProperty("ReverseForward");
        //sp_SyncWithAnimator = serializedObject.FindProperty("SyncWithAnimator");
        //sp_DetectZeroKeyframes = serializedObject.FindProperty("DetectZeroKeyframes");
        sp_BackwardMovement        = serializedObject.FindProperty("BackwardMovement");
        sp_PhysicalClock           = serializedObject.FindProperty("AnimatePhysics");
        sp_OptimizeWithMesh        = serializedObject.FindProperty("OptimizeWithMesh");
        sp_LeadBoneOffsetReference = serializedObject.FindProperty("LeadBoneOffsetReference");
        sp_UseCorrections          = serializedObject.FindProperty("UseCorrections");
        sp_HeadAnchor               = serializedObject.FindProperty("HeadAnchor");
        sp_AnimateAnchor            = serializedObject.FindProperty("AnimateAnchor");
        sp_UpdateAsLast             = serializedObject.FindProperty("UpdateAsLast");
        sp_MotionInfluence          = serializedObject.FindProperty("MotionInfluence");
        sp_MotionSpace              = serializedObject.FindProperty("MotionSpace");
        sp_ManualAffects            = serializedObject.FindProperty("ManualAffectChain");
        sp_ModelForwardAxis         = serializedObject.FindProperty("ModelForwardAxis");
        sp_ModelUpAxis              = serializedObject.FindProperty("ModelUpAxis");
        sp_RoundCorrection          = serializedObject.FindProperty("RoundCorrection");
        sp_UnifyCorrection          = serializedObject.FindProperty("UnifyCorrection");
        sp_StartAfterTPose          = serializedObject.FindProperty("StartAfterTPose");
        sp_InversedVerticalRotation = serializedObject.FindProperty("InversedVerticalRotation");
        sp_OrientationReference     = serializedObject.FindProperty("OrientationReference");
        sp_DeltaType = serializedObject.FindProperty("DeltaType");

        sp_PositionsSmoother      = serializedObject.FindProperty("PosSmoother");
        sp_RotationsSmoother      = serializedObject.FindProperty("RotSmoother");
        sp_MaxStretching          = serializedObject.FindProperty("MaxStretching");
        sp_Slithery               = serializedObject.FindProperty("Slithery");
        sp_AngleLimit             = serializedObject.FindProperty("AngleLimit");
        sp_LimitingAngleSmoother  = serializedObject.FindProperty("LimitSmoother");
        sp_StraighteningSpeed     = serializedObject.FindProperty("StraightenSpeed");
        sp_TurboStraighten        = serializedObject.FindProperty("TurboStraighten");
        sp_GoBackSpeed            = serializedObject.FindProperty("GoBackSpeed");
        sp_Springiness            = serializedObject.FindProperty("Springiness");
        sp_SegmentsPivotOffset    = serializedObject.FindProperty("SegmentsPivotOffset");
        sp_MainPivotOffset        = serializedObject.FindProperty("MainPivotOffset");
        sp_DistancesMul           = serializedObject.FindProperty("DistancesMultiplier");
        sp_LeadBoneRotationOffset = serializedObject.FindProperty("LeadBoneRotationOffset");

        sp_UseCollisions      = serializedObject.FindProperty("UseCollisions");
        sp_IncludedColliders  = serializedObject.FindProperty("IncludedColliders");
        sp_CollidersScale     = serializedObject.FindProperty("CollidersScale");
        sp_CollidersScaleMul  = serializedObject.FindProperty("CollidersScaleMul");
        sp_CollidersAutoCurve = serializedObject.FindProperty("DifferenceScaleFactor");
        sp_GravityPower       = serializedObject.FindProperty("GravityPower");

        sp_AllCollidersOffset = serializedObject.FindProperty("OffsetAllColliders");
        sp_UseTruePosition    = serializedObject.FindProperty("UseTruePosition");
        sp_DetailedCollision  = serializedObject.FindProperty("DetailedCollision");
        sp_UpdateRate         = serializedObject.FindProperty("UpdateRate");

        BackCompatibilityConversion();
        FGUI_Finders.ResetFinders(false);
        FindComponents();
        AutoSuggestChain();

        if (Get.SpineBones != null)
        {
            if (Get.SpineBones.Count > 0)
            {
                if (Get.SpineBones[Get.SpineBones.Count - 1].transform)
                {
                    if (Get.SpineBones[Get.SpineBones.Count - 1].transform != Get._gizmosEditorStartPreview)
                    {
                        Get._gizmosEditorEndPreview = Get.SpineBones[Get.SpineBones.Count - 1].transform;
                    }
                }

                if (Get.SpineBones[0].transform)
                {
                    if (Get.SpineBones[0].transform != Get._gizmosEditorEndPreview)
                    {
                        Get._gizmosEditorStartPreview = Get.SpineBones[0].transform;
                    }
                }
            }
        }

        if (hideSkin)
        {
            for (int i = 0; i < skins.Count; i++)
            {
                skins[i].shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.ShadowsOnly;
            }
        }


        // Detecting if using few spine animators
        if (Get.BaseTransform != Get.transform)
        {
            if (Get.BaseTransform != null)
            {
                if (Get.BaseTransform.GetComponent <FSpineAnimator>())
                {
                    anchoringWarning = true;
                    drawCorrecting   = true;
                    drawAnchoring    = true;
                }
            }
        }

        if (Get.UseCollisions)
        {
            drawPhysics = true;
        }

        if (Get.SpineBones == null)
        {
            Get.SpineBones = new List <FSpineAnimator.SpineBone>();
        }
        if (Get.SpineBones.Count < 1)
        {
            if (SceneView.lastActiveSceneView)
            {
                SceneView.lastActiveSceneView.FrameSelected();
            }
        }

        if (animator)
        {
            if (animator.updateMode == AnimatorUpdateMode.AnimatePhysics)
            {
                if (Get.AnimatePhysics == false)
                {
                    drawSetup           = true;
                    drawAdditionalSetup = true;
                }
            }
        }
    }
コード例 #4
0
        //ModelForwardAxis


        protected virtual void OnEnable()
        {
            sp_tofollow             = serializedObject.FindProperty("ObjectToFollow");
            sp_lookBones            = serializedObject.FindProperty("LookBones");
            sp_FollowOffset         = serializedObject.FindProperty("FollowOffset");
            sp_FollowMode           = serializedObject.FindProperty("FollowMode");
            sp_leadbone             = serializedObject.FindProperty("LeadBone");
            sp_AutoBackbonesWeights = serializedObject.FindProperty("AutoBackbonesWeights");
            sp_basetr     = serializedObject.FindProperty("BaseTransform");
            sp_rotspd     = serializedObject.FindProperty("RotationSpeed");
            sp_usmooth    = serializedObject.FindProperty("UltraSmoother");
            sp_backbcount = serializedObject.FindProperty("BackBonesCount");
            sp_falloff    = serializedObject.FindProperty("BackBonesFalloff");
            //sp_CustomWeights = serializedObject.FindProperty("CustomWeights");
            sp_clamph     = serializedObject.FindProperty("XRotationLimits");
            sp_clampv     = serializedObject.FindProperty("YRotationLimits");
            sp_maxdiff    = serializedObject.FindProperty("StopLookingAbove");
            sp_chretspeed = serializedObject.FindProperty("ChangeTargetSmoothing");
            //sp_animwithsource = serializedObject.FindProperty("SyncWithAnimator");
            sp_angoff         = serializedObject.FindProperty("RotationOffset");
            sp_axesmul        = serializedObject.FindProperty("RotCorrectionMultiplier");
            sp_AnimationStyle = serializedObject.FindProperty("AnimationStyle");
            sp_DeltaAcc       = serializedObject.FindProperty("QuickerRotateAbove");
            //sp_LookState = serializedObject.FindProperty("LookState");

            sp_blend     = serializedObject.FindProperty("LookAnimatorAmount");
            sp_eyespos   = serializedObject.FindProperty("StartLookPointOffset");
            sp_ancheyes  = serializedObject.FindProperty("AnchorStartLookPoint");
            sp_anchrefr  = serializedObject.FindProperty("RefreshStartLookPoint");
            sp_leadblend = serializedObject.FindProperty("LeadBoneWeight");
            //sp_rotaoff = serializedObject.FindProperty("SyncWithAnimator");
            sp_monitor = serializedObject.FindProperty("MonitorAnimator");

            sp_compensblend  = serializedObject.FindProperty("CompensationWeight");
            sp_compensblendB = serializedObject.FindProperty("CompensationWeightB");
            sp_poscompens    = serializedObject.FindProperty("CompensatePositions");
            sp_poscompensB   = serializedObject.FindProperty("CompensatePositionsB");
            sp_weighmul      = serializedObject.FindProperty("WeightsMultiplier");
            //sp_DetectZeroKeyframes = serializedObject.FindProperty("DetectZeroKeyframes");

            sp_auto          = serializedObject.FindProperty("AutomaticFix");
            sp_manfromax     = serializedObject.FindProperty("ManualFromAxis");
            sp_mantoax       = serializedObject.FindProperty("ManualToAxis");
            sp_lookdirection = serializedObject.FindProperty("LookDirection");

            sp_autooff  = serializedObject.FindProperty("OffsetAuto");
            sp_autofrom = serializedObject.FindProperty("FromAuto");
            sp_fixpres  = serializedObject.FindProperty("FixingPreset");

            sp_elasticX   = serializedObject.FindProperty("XElasticRange");
            sp_elasticY   = serializedObject.FindProperty("YElasticRange");
            sp_starttpose = serializedObject.FindProperty("StartAfterTPose");
            sp_dray       = serializedObject.FindProperty("DebugRays");

            sp_usecurve = serializedObject.FindProperty("CurveSpread");
            sp_fallvall = serializedObject.FindProperty("FaloffValue");
            sp_backoff  = serializedObject.FindProperty("BackBonesAddOffset");
            //sp_180prev = serializedObject.FindProperty("Fix180");
            sp_maxdist           = serializedObject.FindProperty("MaximumDistance");
            sp_distMeasureOffset = serializedObject.FindProperty("DistanceMeasurePoint");
            sp_dist2D            = serializedObject.FindProperty("Distance2D");

            sp_bird     = serializedObject.FindProperty("BirdMode");
            sp_birdlag  = serializedObject.FindProperty("LagRotation");
            sp_birdfreq = serializedObject.FindProperty("LagEvery");
            //sp_birdspd = serializedObject.FindProperty("LaggySpeed");
            sp_birddel        = serializedObject.FindProperty("DelayPosition");
            sp_birmaxdist     = serializedObject.FindProperty("DelayMaxDistance");
            sp_birddelgospeed = serializedObject.FindProperty("DelayGoSpeed");
            sp_animphys       = serializedObject.FindProperty("AnimatePhysics");

            sp_LookWhenAbove         = serializedObject.FindProperty("LookWhenAbove");
            sp_LookWhenAboveVertical = serializedObject.FindProperty("LookWhenAboveVertical");
            //sp_LookAboveCurve = serializedObject.FindProperty("StartLookCurve");
            //sp_LookAboveEnvelope = serializedObject.FindProperty("StartLook");

            sp_OptimizeWithMesh          = serializedObject.FindProperty("OptimizeWithMesh");
            sp_NoddingTransitions        = serializedObject.FindProperty("NoddingTransitions");
            sp_BackBonesNod              = serializedObject.FindProperty("BackBonesNod");
            sp_NodAxis                   = serializedObject.FindProperty("NodAxis");
            sp_HoldRotateToOppositeUntil = serializedObject.FindProperty("HoldRotateToOppositeUntil");

            sp_ModelForwardAxis       = serializedObject.FindProperty("ModelForwardAxis");
            sp_ModelUpAxis            = serializedObject.FindProperty("ModelUpAxis");
            sp_DetectionFactor        = serializedObject.FindProperty("MaxOutDistanceFactor");
            sp_LookAtPositionSmoother = serializedObject.FindProperty("LookAtPositionSmoother");
            sp_DestroyMomentTransformOnMaxDistance = serializedObject.FindProperty("DestroyMomentTargetOnMaxDistance");
            sp_DeltaType       = serializedObject.FindProperty("DeltaType");
            sp_SimulationSpeed = serializedObject.FindProperty("SimulationSpeed");

            sp_StartLookElasticRangeX      = serializedObject.FindProperty("StartLookElasticRangeX");
            sp_StartLookElasticRangeY      = serializedObject.FindProperty("StartLookElasticRangeY");
            sp_MaxRotationSpeed            = serializedObject.FindProperty("MaxRotationSpeed");
            sp_WhenAboveEraseAfter         = serializedObject.FindProperty("WhenAboveGoBackAfter");
            sp_WhenAboveEraseAfterVertical = serializedObject.FindProperty("WhenAboveGoBackAfterVertical");
            sp_WhenAboveGoBackDuration     = serializedObject.FindProperty("WhenAboveGoBackDuration");
            sp_BaseRotationCompensation    = serializedObject.FindProperty("BaseRotationCompensation");


            CheckForComponents();

            sp_CompensationWeightB            = serializedObject.FindProperty("CompensationWeightB");
            sp_CompensatePositionsB           = serializedObject.FindProperty("CompensatePositionsB");
            sp_BigAngleAutomation             = serializedObject.FindProperty("BigAngleAutomation");
            sp_BigAngleAutomationCompensation = serializedObject.FindProperty("BigAngleAutomationCompensation");


            // EYES

            sp_eyeL               = serializedObject.FindProperty("LeftEye");
            sp_eyeLInv            = serializedObject.FindProperty("InvertLeftEye");
            sp_eyeR               = serializedObject.FindProperty("RightEye");
            sp_eyeRInv            = serializedObject.FindProperty("InvertRightEye");
            sp_head               = serializedObject.FindProperty("HeadReference");
            sp_eyesTarget         = serializedObject.FindProperty("EyesTarget");
            sp_eyesSpeed          = serializedObject.FindProperty("EyesSpeed");
            sp_eyesBlend          = serializedObject.FindProperty("EyesBlend");
            sp_EyesOffsetRotation = serializedObject.FindProperty("EyesOffsetRotation");


            sp_EyesXRange      = serializedObject.FindProperty("EyesXRange");
            sp_EyesYRange      = serializedObject.FindProperty("EyesYRange");
            sp_EyesNoKeyframes = serializedObject.FindProperty("EyesNoKeyframes");

            if (Get.CompensationBones == null)
            {
                Get.CompensationBones = new List <FLookAnimator.CompensationBone>();
            }

            // Checking which tabs should be opened for faster workflow

            //if ( Get.BackBonesCount == 0 )
            //{
            //    drawSetup = true;
            //    drawBackBones = true;
            //}

            if (Get.LeadBone == null || Get.BaseTransform == null)
            {
                drawSetup = true;

                //if (Get.BackBonesCount == 0) drawBackBones = true; else drawBackBones = false;

                drawTweaking   = false;
                drawAdditional = false;
                drawCorrecting = false;
            }
            else
            {
                if (Get.BackBonesCount == 0)
                {
                    drawSetup = true; drawBackBones = true;
                }
                else
                {
                    drawSetup = false;
                }
                drawTweaking = true;

                drawAdditional = false;
                drawCorrecting = false;
            }

            if (Get.UseEyes)
            {
                drawEyesSettings = true;

                if (Get.LeftEye != null && Get.HeadReference != null)
                {
                    drawEyesSetup = false;
                }
                else
                {
                    drawEyesSetup = true;
                }
            }


            FGUI_Finders.ResetFinders(false);

            SetupLangs();
        }