public void Initialize()
        {
            anim = GetComponent <Animator>();
            net  = GetComponent <NetworkObject>();
            sR   = GetComponent <SpriteRenderer>();
            if (anim == null)
            {
                Destroy(this);
            }

            if (sR == null)
            {
                manageSpriteFlips = false;
            }

            foreach (AnimatorControllerParameter parameter in anim.parameters)
            {
                if (parameter.type == AnimatorControllerParameterType.Bool)
                {
                    animationBools.Add(parameter);
                    animationBoolsLastValue.Add(anim.GetBool(parameter.name));

                    net.CreateField(parameter.name, anim.GetBool(parameter.name), NetworkField.valueInitializer.Boolean, false, false);
                    net.FieldAddOnChangeMethod(parameter.name, OnNetworkFieldBoolUpdate);
                    //net.FieldAddStringChangeMethod(parameter.name, "OnNetworkFieldBoolUpdate", "EntityNetworkingSystemsAnimationNetworker");
                }
            }

            if (manageSpriteFlips)
            {
                net.CreateField("SRFlipX", sR.flipX, init: NetworkField.valueInitializer.Boolean, true, false);
                net.CreateField("SRFlipY", sR.flipX, init: NetworkField.valueInitializer.Boolean, true, false);

                net.FieldAddOnChangeMethod("SRFlipX", OnNetworkFieldFlipX);
                net.FieldAddOnChangeMethod("SRFlipY", OnNetworkFieldFlipY);
            }


            if (net.IsOwner())
            {
                StartCoroutine(HandleAnimationBoolPackets());
            }

            initialized = true;
        }
        private void Awake()
        {
            net = GetComponent <NetworkObject>();
            allWorkers.Add(this);


            int index = 0;

            foreach (TrackedKey key in keys)
            {
                if (key.isNetworked)
                {
                    net.CreateField("IW" + key.displayName, "000", init: NetworkField.valueInitializer.None, false).reliable = key.reliable;
                    net.FieldAddOnChangeMethod("IW" + key.displayName, key.OnNetworkUpdate, false);
                }
                keycodeLookup.Add(key.key, index);
                nameLookup.Add(key.displayName, index);
                index++;
            }
        }