Пример #1
0
        public void OnReplaySerialize(ReplayState state)
        {
            // Write the object identity
            state.Write(objectIdentity);
            state.Write(timestamp);

            // Calcualte the flags
            flags = ReplayInitialDataFlags.None;

            // Mkae sure initial state flags are updated
            UpdateDataFlags();

            // Write the data flags
            state.Write((short)flags);

            // Write Position
            if ((flags & ReplayInitialDataFlags.Position) != 0)
            {
                state.Write(position);
            }

            // Write rotation
            if ((flags & ReplayInitialDataFlags.Rotation) != 0)
            {
                state.Write(rotation);
            }

            // Write scale
            if ((flags & ReplayInitialDataFlags.Scale) != 0)
            {
                state.Write(scale);
            }

            // Write parent
            if ((flags & ReplayInitialDataFlags.Parent) != 0)
            {
                state.Write(parentIdentity);
            }

            // Write the component identities
            int size = (observedComponentIdentities == null) ? 0 : observedComponentIdentities.Length;

            // Write the number of ids
            state.Write((short)size);

            // Write all ids
            for (int i = 0; i < size; i++)
            {
                // Write the identity
                state.Write(observedComponentIdentities[i]);
            }
        }
Пример #2
0
        public void OnReplayDeserialize(ReplayState state)
        {
            // Read the object identity
            objectIdentity = state.ReadIdentity();
            timestamp      = state.ReadFloat();

            // Read the flags
            flags = (ReplayInitialDataFlags)state.Read16();

            // Read position
            if ((flags & ReplayInitialDataFlags.Position) != 0)
            {
                position = state.ReadVec3();
            }

            // Read rotation
            if ((flags & ReplayInitialDataFlags.Rotation) != 0)
            {
                rotation = state.ReadQuat();
            }

            // Read scale
            if ((flags & ReplayInitialDataFlags.Scale) != 0)
            {
                scale = state.ReadVec3();
            }

            // Read parent identity
            if ((flags & ReplayInitialDataFlags.Parent) != 0)
            {
                parentIdentity = state.ReadIdentity();
            }

            // Read the number of observed components
            int size = state.Read16();

            // Allocate the array
            observedComponentIdentities = new ReplayIdentity[size];

            // Read all ids
            for (int i = 0; i < size; i++)
            {
                // Read the identity
                observedComponentIdentities[i] = state.ReadIdentity();
            }
        }
Пример #3
0
        // Methods
        public void UpdateDataFlags()
        {
            // Reset flags
            flags = ReplayInitialDataFlags.None;

            // Create the initial object flag data
            if (position != Vector3.zero)
            {
                flags |= ReplayInitialDataFlags.Position;
            }
            if (rotation != Quaternion.identity)
            {
                flags |= ReplayInitialDataFlags.Rotation;
            }
            if (scale != Vector3.one)
            {
                flags |= ReplayInitialDataFlags.Scale;
            }
            if (parentIdentity != null)
            {
                flags |= ReplayInitialDataFlags.Parent;
            }
        }