Пример #1
0
        public virtual void ApplyState(NetStream state)
        {
            if (showDebug)
            {
                Debug.Log(base.name + " Apply State ");
            }
            EnsureInitialized();
            Vector3 vector = posEncoder.ApplyState(state);

            for (int i = 0; i < rigidSegments; i++)
            {
                Transform  transform = bones[i];
                Vector3    b         = diffEncoder.ApplyState(state);
                Vector3    vector2   = vector + b;
                Vector3    vector3   = (vector + vector2) / 2f;
                Quaternion rotation  = (i != 0) ? Quaternion.LookRotation(vector2 - vector, bones[i - 1].up) : Quaternion.LookRotation(vector2 - vector);
                if (transform.position != vector3)
                {
                    transform.position = vector3;
                    isDirty            = true;
                }
                if (transform.rotation.eulerAngles != rotation.eulerAngles)
                {
                    transform.rotation = rotation;
                    isDirty            = true;
                }
                vector = vector2;
            }
        }
Пример #2
0
    private void OnHit(NetStream stream)
    {
        HitType type     = (HitType)stream.ReadUInt32(1);
        Vector3 position = posEncoder.ApplyState(stream);

        DoHit(type, position);
    }
Пример #3
0
    private void OnHit(NetStream stream)
    {
        if (showDebug)
        {
            Debug.Log(base.name + " OnHit ");
        }
        HitType type     = (HitType)stream.ReadUInt32(1);
        Vector3 position = posEncoder.ApplyState(stream);

        DoHit(type, position);
    }
Пример #4
0
    public void ApplyLerpedState(NetStream state0, NetStream state1, float mix)
    {
        bool flag  = state0?.ReadBool() ?? false;
        bool flag2 = state1.ReadBool();

        if (flag2 != isSpawned)
        {
            if (flag2)
            {
                SpawnLetters(Vector3.zero);
            }
            else
            {
                DespawnAll();
            }
        }
        if (flag && flag2)
        {
            base.transform.position = posEncoderBlock.ApplyLerpedState(state0, state1, mix).SetY(lineY);
            base.transform.rotation = rotEncoderBlock.ApplyLerpedState(state0, state1, mix);
        }
        else if (flag2)
        {
            base.transform.position = posEncoderBlock.ApplyState(state1).SetY(lineY);
            base.transform.rotation = rotEncoderBlock.ApplyState(state1);
        }
        else if (flag)
        {
            posEncoderBlock.ApplyState(state0);
            rotEncoderBlock.ApplyState(state0);
        }
        for (int i = 0; i < letters.Count; i++)
        {
            bool          flag3         = flag && state0.ReadBool();
            bool          flag4         = flag2 && state1.ReadBool();
            CreditsLetter creditsLetter = letters[i];
            if (creditsLetter != null && !flag4)
            {
                DespawnLetter(i);
                creditsLetter = null;
            }
            else if (creditsLetter == null && flag4)
            {
                SpawnLetter(i);
                creditsLetter = letters[i];
            }
            if (flag3 && flag4)
            {
                Transform transform = creditsLetter.transform;
                Vector3   a         = posEncoder.ApplyLerpedState(state0, state1, mix);
                Character character = characters[i];
                transform.localPosition = a + character.spawnPos;
                creditsLetter.transform.localRotation = rotEncoder.ApplyLerpedState(state0, state1, mix);
            }
            else if (flag4)
            {
                Transform transform2 = creditsLetter.transform;
                Vector3   a2         = posEncoder.ApplyState(state1);
                Character character2 = characters[i];
                transform2.localPosition = a2 + character2.spawnPos;
                creditsLetter.transform.localRotation = rotEncoder.ApplyState(state1);
            }
            else if (flag3)
            {
                posEncoder.ApplyState(state0);
                rotEncoder.ApplyState(state0);
            }
        }
    }