void read_avatar_state()

in Networked Physics/Assets/Scripts/PacketSerializer.cs [1062:1166]


    void read_avatar_state( Network.ReadStream stream, out AvatarStateQuantized avatarState )
    {
        read_int( stream, out avatarState.client_index, 0, Constants.MaxClients - 1 );

        read_int( stream, out avatarState.head_position_x, Constants.PositionMinimumXZ, Constants.PositionMaximumXZ );
        read_int( stream, out avatarState.head_position_y, Constants.PositionMinimumY, Constants.PositionMaximumY );
        read_int( stream, out avatarState.head_position_z, Constants.PositionMinimumXZ, Constants.PositionMaximumXZ );

        read_bits( stream, out avatarState.head_rotation_largest, 2 );
        read_bits( stream, out avatarState.head_rotation_a, Constants.RotationBits );
        read_bits( stream, out avatarState.head_rotation_b, Constants.RotationBits );
        read_bits( stream, out avatarState.head_rotation_c, Constants.RotationBits );

        read_int( stream, out avatarState.left_hand_position_x, Constants.PositionMinimumXZ, Constants.PositionMaximumXZ );
        read_int( stream, out avatarState.left_hand_position_y, Constants.PositionMinimumY, Constants.PositionMaximumY );
        read_int( stream, out avatarState.left_hand_position_z, Constants.PositionMinimumXZ, Constants.PositionMaximumXZ );

        read_bits( stream, out avatarState.left_hand_rotation_largest, 2 );
        read_bits( stream, out avatarState.left_hand_rotation_a, Constants.RotationBits );
        read_bits( stream, out avatarState.left_hand_rotation_b, Constants.RotationBits );
        read_bits( stream, out avatarState.left_hand_rotation_c, Constants.RotationBits );

        read_int( stream, out avatarState.left_hand_grip_trigger, Constants.TriggerMinimum, Constants.TriggerMaximum );
        read_int( stream, out avatarState.left_hand_index_trigger, Constants.TriggerMinimum, Constants.TriggerMaximum );
        read_bool( stream, out avatarState.left_hand_pointing );
        read_bool( stream, out avatarState.left_hand_thumbs_up );

        read_bool( stream, out avatarState.left_hand_holding_cube );

        if ( avatarState.left_hand_holding_cube )
        {
            read_int( stream, out avatarState.left_hand_cube_id, 0, Constants.NumCubes - 1 );
            read_bits( stream, out avatarState.left_hand_authority_sequence, 16 );
            read_bits( stream, out avatarState.left_hand_ownership_sequence, 16 );

            read_int( stream, out avatarState.left_hand_cube_local_position_x, Constants.LocalPositionMinimum, Constants.LocalPositionMaximum );
            read_int( stream, out avatarState.left_hand_cube_local_position_y, Constants.LocalPositionMinimum, Constants.LocalPositionMaximum );
            read_int( stream, out avatarState.left_hand_cube_local_position_z, Constants.LocalPositionMinimum, Constants.LocalPositionMaximum );

            read_bits( stream, out avatarState.left_hand_cube_local_rotation_largest, 2 );
            read_bits( stream, out avatarState.left_hand_cube_local_rotation_a, Constants.RotationBits );
            read_bits( stream, out avatarState.left_hand_cube_local_rotation_b, Constants.RotationBits );
            read_bits( stream, out avatarState.left_hand_cube_local_rotation_c, Constants.RotationBits );
        }
        else
        {
            avatarState.left_hand_cube_id = 0;
            avatarState.left_hand_authority_sequence = 0;
            avatarState.left_hand_ownership_sequence = 0;
            avatarState.left_hand_cube_local_position_x = 0;
            avatarState.left_hand_cube_local_position_y = 0;
            avatarState.left_hand_cube_local_position_z = 0;
            avatarState.left_hand_cube_local_rotation_largest = 0;
            avatarState.left_hand_cube_local_rotation_a = 0;
            avatarState.left_hand_cube_local_rotation_b = 0;
            avatarState.left_hand_cube_local_rotation_c = 0;
        }

        read_int( stream, out avatarState.right_hand_position_x, Constants.PositionMinimumXZ, Constants.PositionMaximumXZ );
        read_int( stream, out avatarState.right_hand_position_y, Constants.PositionMinimumY, Constants.PositionMaximumY );
        read_int( stream, out avatarState.right_hand_position_z, Constants.PositionMinimumXZ, Constants.PositionMaximumXZ );

        read_bits( stream, out avatarState.right_hand_rotation_largest, 2 );
        read_bits( stream, out avatarState.right_hand_rotation_a, Constants.RotationBits );
        read_bits( stream, out avatarState.right_hand_rotation_b, Constants.RotationBits );
        read_bits( stream, out avatarState.right_hand_rotation_c, Constants.RotationBits );

        read_int( stream, out avatarState.right_hand_grip_trigger, Constants.TriggerMinimum, Constants.TriggerMaximum );
        read_int( stream, out avatarState.right_hand_index_trigger, Constants.TriggerMinimum, Constants.TriggerMaximum );
        read_bool( stream, out avatarState.right_hand_pointing );
        read_bool( stream, out avatarState.right_hand_thumbs_up );

        read_bool( stream, out avatarState.right_hand_holding_cube );

        if ( avatarState.right_hand_holding_cube )
        {
            read_int( stream, out avatarState.right_hand_cube_id, 0, Constants.NumCubes - 1 );
            read_bits( stream, out avatarState.right_hand_authority_sequence, 16 );
            read_bits( stream, out avatarState.right_hand_ownership_sequence, 16 );

            read_int( stream, out avatarState.right_hand_cube_local_position_x, Constants.LocalPositionMinimum, Constants.LocalPositionMaximum );
            read_int( stream, out avatarState.right_hand_cube_local_position_y, Constants.LocalPositionMinimum, Constants.LocalPositionMaximum );
            read_int( stream, out avatarState.right_hand_cube_local_position_z, Constants.LocalPositionMinimum, Constants.LocalPositionMaximum );

            read_bits( stream, out avatarState.right_hand_cube_local_rotation_largest, 2 );
            read_bits( stream, out avatarState.right_hand_cube_local_rotation_a, Constants.RotationBits );
            read_bits( stream, out avatarState.right_hand_cube_local_rotation_b, Constants.RotationBits );
            read_bits( stream, out avatarState.right_hand_cube_local_rotation_c, Constants.RotationBits );
        }
        else
        {
            avatarState.right_hand_cube_id = 0;
            avatarState.right_hand_authority_sequence = 0;
            avatarState.right_hand_ownership_sequence = 0;
            avatarState.right_hand_cube_local_position_x = 0;
            avatarState.right_hand_cube_local_position_y = 0;
            avatarState.right_hand_cube_local_position_z = 0;
            avatarState.right_hand_cube_local_rotation_largest = 0;
            avatarState.right_hand_cube_local_rotation_a = 0;
            avatarState.right_hand_cube_local_rotation_b = 0;
            avatarState.right_hand_cube_local_rotation_c = 0;
        }

        read_int( stream, out avatarState.voice_amplitude, Constants.VoiceMinimum, Constants.VoiceMaximum );
    }