protected override bool Freeze(float endTime, bool inIce)
        {
            bool frozen = this.frozen;

            if (!base.Freeze(endTime, inIce))
            {
                return(false);
            }

            if (!frozen)
            {
                if (animatorLink != null)
                {
                    animatorLink.enabled = false;
                }

                animator.enabled     = false;
                locomotionWasEnabled = false;

                if (locomotion.enabled)
                {
                    locomotionWasEnabled = true;
                    locomotion.enabled   = false;
                }

                frozenCreatures.Add(this);
            }

            if (ecoTarget != null)
            {
                ecoTarget.enabled = !inIce;
            }

            float lifeTime = (endTime == float.PositiveInfinity) ? -1f : (endTime - Time.time);

            if (iceOverlay != null)
            {
                iceOverlay.RemoveOverlay();
            }

            iceOverlay = modelRoot.AddComponent <VFXOverlayMaterial>();

            iceOverlay.ApplyAndForgetOverlay(iceMaterial, "VFXOverlay: Frozen", Color.clear, lifeTime, null, CameraEvent.AfterForwardAlpha);

            return(true);
        }